Linq查询IEnumerable <T>扩展方法

CSh*_*oob 3 c# linq

想想这个,

     class Item
     { 
        public string ID { get; set;}
        public string Description { get; set; }
     }

     class SaleItem
     { 
        public string ID { get; set;}
        public string Discount { get; set; }
     }


     var itemsToRemoved = (List<Item>)ViewState["ItemsToRemove"];
     // get only rows of ID
     var query = from i in itemsToRemoved select i.ID;

     var saleItems= (List<SaleItem>)ViewState["SaleItems"];
     foreach (string s in query.ToArray())
     {
            saleItems.RemoveItem(s);
     }
Run Code Online (Sandbox Code Playgroud)

如何使用IEnumerable/List Extension方法编写此LINQ短语

  // get only rows of ID
   var query = from i in items select i.ID;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Jon*_*eet 5

那个很容易:

var query = items.Select(i => i.ID);
Run Code Online (Sandbox Code Playgroud)

一个select子句总是对应一个调用Select.其他一些运营商最终会得到一个相当复杂的扩展:)如果你努力工作,你可以让编译器做一些非常奇怪的事情 ......

您可以在C#规范(v3或v4)的第7.16节中找到此查询表达式和其他查询表达式转换的所有详细信息.

<plug>如果你真的想要:) 你也可以在深度,第2版购买C#并阅读第11章:)</plug>

  • @CsharpNoob:差异仅存在于源代码中.编译后的表格*完全相同*. (3认同)