如果我的课程结构如下:
private class A
{
int afoo { get; set; }
B[] bList { get; set; }
}
private class B
{
String bfoo { get; set; }
C[] cList { get; set; }
}
private class C
{
String cfoo { get; set; }
int cfoo2 { get; set; }
}
public class Master
{
A[] aList;
//qry for all where A.B.C.cfoo = "test"
}
如何构造动态LINQ语句来查询C类中的项?像这样的东西
1) var qry = aList.blist.clist.AsQueryable().Where("cfoo = \"Test\"").Select();
我的最终解决方案是在动态部分中传递整个路径,如下所示:
2) var qry = aList.AsQueryable().Where("bList.cList.cFoo = ""Test"").Select();
但是根据我的尝试,你不能在Where中拥有嵌套对象。因此,我将使用模板来构建上述1)中的方法。
[另外,我使用Scott Gu的动态库作为动态部分。]
但是,我无法让它发挥作用。有什么建议吗?
谢谢!
答案 0 :(得分:2)
aList.SelectMany(a => a.bList)
.SelectMany(b => b.cList)
.Where(c => c.cfoo == "\"Test\"");
答案 1 :(得分:0)
试试这个:
aList.SelectMany(a => a.bList.SelectMany(b => b.cList))
.Where(c => c.cf002 == "Test")
.Select();