【发布时间】:2023-04-09 07:03:02
【问题描述】:
我有一个特殊问题想通过使用 LINQ 来解决,但我的解决方案还不起作用。 我将结构压缩到最低限度,希望它易于理解。 类如下:
public class A
{
public List<B> ListOfBs { get; set; }
}
public class B
{
public List<C> ListOfCs { get; set; }
}
public class C
{
public int ID { get; set; }
public string SomeText { get; set; }
}
在我的代码中,我想过滤特定的 C,并将它们设置为新的 List 作为 B(甚至 A)的新实例的属性。所以我在一个函数中尝试了以下 Linq 查询:
public B FilterFunction(A a, string someText)
{
B FilteredB = new B();
FilteredB.ListOfCs = (from b in a.ListOfBs
from c in b.ListOfCs
where c.SomeText == someText
select c).ToList();
return FilteredB;
}
但是,返回的列表是空的,所以我猜我的 LINQ 查询不正确。有什么建议? 先感谢您 马丁
【问题讨论】:
-
要清楚,您有一个包含
List<B>的A,每个B都包含一个List<C>,您想要创建并返回一个新的B,其中包含List<C>其中每个C匹配特定条件?如果是这样,那么这是SelectMany的工作。我会整理出一个答案。 -
你的实现是正确的。你的问题应该出在数据上