如何将每个列上的这个LINQ查询简化为单个语句

时间:2009-03-06 01:54:52

标签: linq

这是我的LINQ查询,它获取每个选定列的唯一值,并将它们作为列表存储在字典中。

var serialTable = serialNoAdapter.GetData();
var distinctValue = (from row in serialTable
                    select new
                    {
                        row.CodePractice,
                       row.LockType,
                       row.Software
                    }).Distinct().ToList();
var softwareValue = distinctValue.Select(p => p.Software).Distinct().ToList();
var codeValue = distinctValue.Select(p => p.CodePractice).Distinct().ToList();
var lockValue = distinctValue.Select(p => p.LockType).Distinct().ToList();

return new Dictionary<string, List<string>>()
       {
           {"software", softwareValue},
           {"codepractice", codeValue},
           {"locktype", lockValue}
       };

唯一的问题是它被分解为几个陈述。我的问题是,是否可以简化它并将其压缩成单个语句?

1 个答案:

答案 0 :(得分:2)

我相信你可以通过省略中间步骤来大大简化它。

var softwareValue = serialTable.Select(p => p.Software).Distinct().ToList();
var codeValue = serialTable.Select(p => p.CodePractice).Distinct().ToList();
var lockValue = serialTable.Select(p => p.LockType).Distinct().ToList();

return new Dictionary<string, List<string>>()
       {
           {"software", softwareValue},
           {"codepractice", codeValue},
           {"locktype", lockValue}
       };

也许其他人可以进一步改善。