我目前有以下代码:
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
而且我需要保持与上述相同的现有结构。
任何帮助将非常感激。
参考方案
听起来您需要来自组的SelectMany
:
data.GroupBy(x => x.ItemName)
.Where(g => g.Any(x => x.PartName == part))
.SelectMany(g => g);
与哪些运算符>>兼容 - java我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…
>> Python中的运算符 - python>>运算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 参考方案 它是右移运算符,将所有位“右移”一次。二进制10是1010移到右边变成0101这是5
LINQ RemoveAll代替循环 - c#我有两个for循环,用于从列表中删除项目。我正在为这些循环寻找等效的LINQ语句for (Int32 i = points.Count - 1; i >= 0; i--) { for (Int32 j = touchingRects.Count - 1; j >= 0; j--) { if (touchingRects[j].HitTest(po…
如何知道是否由父母造成了回合(A => B => C => A) - c#我有以下结构:[Employee] ID Manager1ID Manager2ID 场景:我要进行验证,以确保所选的Manager1或Manager2不会引起回合。换句话说,我想知道这种情况是否存在:A的经理是B,B的经理是C,C的经理也是A //无效A => B => C => A告诉用户A不是C的有效管理员,因为C已经是A的管理员。问…
Linq Any()的哪种使用效率更高? - c#我有一个Linq查询,如下所示:return this._alarmObjectAlarmViolationList .Where(row => row.ObjectId == subId) .Where(row => row.AlarmInternalId == "WECO #1 (StdDev > UCL)") .W…