目前,我有以下代码:将两步LINQ查询转换为单个LET查询?
var data = /* enumerable containing rows in your table */;
var part = "X";
var items = new HashSet<int>(data
.Where(x => x.PartName == part)
.Select(x => x.ItemName));
var query = data.Where(x => items.Contains(x.ItemName));
items
发现与特定PartName
数据的所有项目。
query
返回该项目的所有数据记录。
我需要将其转换为一个单独的LET语句(或其他),我可以使用嵌入在另一个更大的LINQ查询。
例如,如果我的数据如下(记录):
ItemName PartName
1 A
1 B
2 A
3 C
我期待与部分项目“A”我需要的最终结果是:
1 A
1 B
2 A
一个建议是做这样的事情:
let a = data.GroupBy(x => x.ItemName)
.Where(g => g.Any(x => x.Partname == part))
.Select(g => new
{
ItemName = g.Key,
PartNames = g.Select(x => x.PartName)
})
然而,返回的数据(让a)不符合预期的重新这返回类似于:
1 A,B // list of parts for that item
2 A
而且我需要保持与上面所示相同的预先存在的结构。
任何帮助将不胜感激。
1+好的解决方案 – Damith 2013-04-18 04:28:12