【问题标题】:Get distinct values of List in List在 List 中获取 List 的不同值
【发布时间】:2017-11-11 01:21:03
【问题描述】:

我正在为一个数据库应用程序而苦苦挣扎,我需要在其中获取不同的值。整个结构看起来有点像这样

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

这是来自数据库的模型,我拥有所有 A's 的子集。现在我需要从所有A's 中获取所有distinctC.x。 所以基本上像

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

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

【问题讨论】:

标签: c# entity-framework linq


【解决方案1】:

像这样修复你的代码:

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

注意B 不是A 的成员,而是Bs,而且你的第二个SelectMany 应该是Select

阅读更多https://stackoverflow.com/a/25564528/2946329

【讨论】:

  • 你是对的,第二个必须是Select,谢谢
【解决方案2】:

你能试试这个吗?另外我认为需要添加.Include 语句:

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

【讨论】:

猜你喜欢
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
相关资源
最近更新 更多