C# 在外部对象/键Linq上连接并获得不同
我有一个这样的模型C# 在外部对象/键Linq上连接并获得不同,c#,linq,C#,Linq,我有一个这样的模型 public class Product { public int Id { get;set;} ... public virtual ICollection<Supplier> Suppliers {get;set;} } public class Suppliers { public int Id {get;set;} ... public string Name {get;set;} } 此查询的结果返回一个
public class Product
{
public int Id { get;set;}
...
public virtual ICollection<Supplier> Suppliers {get;set;}
}
public class Suppliers
{
public int Id {get;set;}
...
public string Name {get;set;}
}
此查询的结果返回一个列表
如何从该列表中获取供应商名称列表???您可以尝试此操作
var supplier_names = _context.Products.Where(condition)
.SelectMany(u => u.Suppliers).Select(a => a.Name).ToList();
你可以试试这个
var supplier_names = _context.Products.Where(condition)
.SelectMany(u => u.Suppliers).Select(a => a.Name).ToList();
多亏了Camilo Terevino,这个查询才有效
var suppliers = _context.Products.Where(condition).SelectMany(u => u.Suppliers).GroupBy(u => u.Name).Select(u => u.First()).ToList()
多亏了Camilo Terevino,这个查询才有效
var suppliers = _context.Products.Where(condition).SelectMany(u => u.Suppliers).GroupBy(u => u.Name).Select(u => u.First()).ToList()
您需要为实现IEqual的类提供一个接口,以便可以使用Distinct。@Camiloterevento我尝试过,但它不起作用,因为选择(u=>u.Suppliers)是一个列表,而不是供应商,因此(u=>u.name)没有公开。对不起,我忘记更改为
SelectMany
。您只需使用\u context.Products.Where(condition).SelectMany(u=>u.Suppliers).GroupBy(u=>u.Name).Select(u=>u.First()).ToList()
@CamiloTerevinto,谢谢。添加它作为我接受的答案您需要为实现IEqual的类提供一个接口,以便您可以使用Distinct。@Camiloterevento我尝试过,但它不起作用,因为选择(u=>u.Suppliers)是一个列表而不是供应商,所以(u=>u.name)没有公开。对不起,我忘记更改为SelectMany
。您只需使用\u context.Products.Where(condition).SelectMany(u=>u.Suppliers).GroupBy(u=>u.Name).Select(u=>u.First()).ToList()
@CamiloTerevinto,谢谢。将其添加为我接受的答案。选择(u=>u.Suppliers)
部分答案不正确。选择(u=>u.Suppliers)
部分答案不正确