Linq to entities - 包括foreach内部查询

时间:2011-12-02 09:13:48

标签: c# linq linq-to-entities foreach

我创建了以下代码:

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的某种'into'短语,告诉查询“将productName插入字典的第一个字符串,将ProductTitle插入第二个”?

3 个答案:

答案 0 :(得分:3)

当然可以!您可以在这里找到示例:

http://www.dotnetperls.com/todictionary

在你的情况下:

.ToDictionary(v => v.ProductName, v => v.ProductTitle)

答案 1 :(得分:2)

在查询时,它可能会混淆代码以进行修改。您当前的实现很容易阅读,并表达了循环的意图。因此,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);

答案 2 :(得分:1)

使用ToDictionary

allItemNames = productNames.ToDictionary(p => p.Name, p => p.ProductTitle)