获取列表

时间:2017-11-10 10:51:08

标签: c# entity-framework linq

我正在努力使用db应用程序,我需要获取不同的值。整个结构看起来有点像这样

class A
{
    public virtual ICollection<B> Bs { get; set; }
}
class B
{
    public virtual C C { get; set; }
}
class C
{
    public int x {get; set;}
}

这是来自db的模型,我有一个所有A's的子集。现在,我需要从所有distinct中获取所有C.x个值A's。 所以基本上像

db.A.Where(something).SelectMany(s => s.Bs.SelectMany(t => t.C.x).ToList().Distinct()).ToList()

但是它告诉我,第二个SelectMany不能从用法中推断出来。

2 个答案:

答案 0 :(得分:1)

修复你的代码:

SelectMany(s => s.Bs.Select(t => t.C.x)

请注意,B不是A的成员,而是Bs的成员,而您的第二个SelectMany也应该是Select

了解更多https://stackoverflow.com/a/25564528/2946329

答案 1 :(得分:1)

你可以尝试一下吗?另外我认为需要添加.Include语句:

db.A.Where(something)/*.Include(a => a.Bs.Select(b => b.C))*/
    .SelectMany(x => x.Bs.Select(b => b.C.x)).Distinct();