在c#中通过linq表达式选择多维度中的特定值



我在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)应该修复你现在得到的错误,不确定它会产生正确的结果:)

最新更新