目前,我有以下代碼:將兩步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