这是我的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}
};
唯一的问题是它被分解为几个陈述。我的问题是,是否可以简化它并将其压缩成单个语句?
答案 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}
};
也许其他人可以进一步改善。