我在c#中有一个linq表达式的问题。
我有一个包含数组
的info类public fruits[] fruits { get; set; }
这个fruits类包含另一组数据:
public anotherSet[] anotherSet { get; set; }
这个类又有一个id
public string id { get; set; }
现在我想通过linq表达式执行变量与id
的匹配。当然,请注意,这涉及到多个维度。
可以有多个水果和多个anotherSet.
我希望对齐方式如下:
fruits.anotherset.id == myVariable
果篮是一个KeyValuePair,带有<key,>
这个信息对象然后包含fruits[]。
但是像这样的东西不起作用:
var filteredId = myFruitsBasket.Where(x => x.Value.fruits.Where(x => x.anotherSet.Where(x => x.id == myFruitsId)));
我不想通过myFruitBasket进行过滤,但需要水果数组[].
传递给linq的lambda表达式的结果应该是布尔值。考虑在where表达式中切换到Any。
myFruitsBasket.Where(x => x.Value.fruits.Any(x => x.anotherSet.Any(x => x.id == myFruitsId))).SelectMany(x => x.Value.fruits)
应该修复你现在得到的错误,不确定它会产生正确的结果:)