IEnumberable<String> To String

如何根据关键字在List<T>中查询出来相应的结果?

Code:

  • Create List<T>

        public class A {
            public string a { get; set; }
            public string b { get; set; }
        }

 

        List<A> aList = new List<A> {
            new A{ a="6", b="AAA"},
            new A{ a="2", b="BBB"}
        };

  • Search List<T>

      //这样是有问题的,无法隐式从IEnumerable<String>转换String

      String c = aList.Where ( o => o.a.Equals ( "6" ) )
                     .Select(o=>o.b);

image

   //这样是没有问题的,但是返回值不对,是当前类型名

     String c = aList.Where ( o => o.a.Equals ( "6" ) )
                      .Select(o=>o.b).ToString();

 

  • 那如何解决?

    使用FirstOrDefault()

    String c = aList.Where ( o => o.a.Equals ( "6" ) )
                            .FirstOrDefault ().b;

     OK了,但是好像有点问题,什么问题呢?

     如果这个集合没有我查询的值,肯定会报错的。

      String c = aList.Where ( o => o.a.Equals ( "1" ) )
                            .FirstOrDefault ().b;

image

  • 那又如何解决呢?

        有两种方案 

  • 编写自定义方法

  String d = Get ( aList , "1" );

        private string Get (List<A> aList , String whereStr) {
           var es = aList.Where ( o => o.a.Equals ( whereStr ) ).FirstOrDefault ();
           if ( es != null ) {
               return es.b;
           }
           else {
               return String.Empty;
           }
       }

或者

        Func<List<A> , String , String> Get = (list , str) => {
            var es = list.Where ( o => o.a.Equals ( str ) ).FirstOrDefault ();
            if ( es != null ) {
                return es.b;
            }
            else {
                return String.Empty;
            }
        };

       String ee = Get ( aList , "1" ); 

  • 编写扩展方法

            自行发挥!

posted @   RicoRui  阅读(2034)  评论(7编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示