linq to entities无法将类型Icollection转换为List类型

时间:2012-11-05 23:14:50

标签: c# linq entity-framework

我正在使用Entity Framework。 我有以下实体:

public class Articolo
{
    ..
    public virtual ICollection<Fornitore> Fornitori { get; set; }
}

public class Fornitore
{
  ...
   public virtual ICollection<Articoli> Articoli { get; set; }    }

以下代码:

List<Fornitore> result = new List<Fornitore>();
var r = zefiroContext.Articoli.Where(p => p.Id == IdArticolo).Select(p => p.Fornitori).ToList();
result = r;

给出编译器错误:

  

无法隐式转换类型'System.Collections.Generic.List&lt;   System.Collections.Generic.ICollection&lt; prova2.Model.Fornitore&GT;&GT;”至   'System.Collections.Generic.List&lt; prova2.Model.Fornitore&GT;'

如何获取List < Fornitore >

2 个答案:

答案 0 :(得分:4)

嗯,你实际上是在尝试选择多个系列而我认为这就是问题所在,将Select更改为SelectMany可能会为您解决问题,但我不确定这是否是您的问题预期的功能。将要发生的是SelectMany将所有单个结果集压缩成一个集合,然后可以将其转换为模型类型列表与模型类型集合列表。

var r = zefiroContext.Articoli.Where(p => p.Id == IdArticolo).SelectMany(p => p.Fornitori).ToList();

答案 1 :(得分:0)

每个Articolo都有很多Fornitori - 所以你得到了一份清单......

您可能只想获得匹配的单项与matchign id ...

var r = zefiroContext.Articoli.First(p => p.Id == IdArticolo).Select(p => p.Fornitori).ToList();