我创建了以下代码:

Dictionary<string, string> allItemNames = new Dictionary<string, string>();


var productNames = from product in entities.tbl_producttype
                               select new { ProductName = product.Name, ProductTitle = product.TitleName };

            foreach (var productName in productNames)
            {
                allItemNames.Add(productName.ProductName, productName.ProductTitle);
            }


它很好用,但是我可以通过删除“ foreach”短语并使查询插入字典来使代码更短吗?就像linq的某种“插入”短语,它告诉查询“将productName插入到字典的第一个字符串中,并将ProductTitle插入到第二个字符串中”?

最佳答案

它可能会混淆代码以在查询时进行修改。您当前的实现很容易阅读,并表达了循环的意图。因此,在Enumerable上没有方法可以做到这一点。

List上可以使用ForEach方法,但是最干净的方法是使用LINQ ToDictionary method

var productNames =
 from product in entities.tbl_producttype
  select new { ProductName = product.Name, ProductTitle = product.TitleName };
var allItemNames =
 productNames
  .ToDictionary(product => product.ProductName, product => product.ProductTitle);

关于c# - Linq to实体-在查询中包含foreach,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8354081/

10-11 22:30