我正在使用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 >
?
答案 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();