LINQ内部连接-从两个表中组合的匿名返回一个对象

本文关键字:组合 一个对象 返回 两个 连接 内部 LINQ | 更新日期: 2023-09-27 18:09:26

与此答案类似,我有一个包含product和LanguageAttribute的匿名对象。然后我需要像这样更新product对象的属性:

public IQueryable<Product> GetProductList()
{
    var result = from p in db.Products
                 join la in db.LanguageAttribute on p.ID equals la.ID
                 where l.LanguageID == "en-US"
                 select new { Proudct = p, Description = la.Description };
    result.ToList().ForEach(i => i.Proudct.Description = i.Description);
    return ???

现在我如何从结果对象到调用方法返回只有product的列表?

LINQ内部连接-从两个表中组合的匿名返回一个对象

给你:

public IEnumerable<Product> GetProductList()
{
    var query = from p in db.Products
                 join la in db.LanguageAttribute on p.ID equals la.ID
                 where l.LanguageID == "en-US"
                 select new { Product = p, Description = la.Description };
    var result = query.ToList();
    result.ForEach(i => i.Product.Description = i.Description);
    List<Product> products = result.Select(i => i.Product).ToList();
    return products;
}

List没有实现IQueryable,所以我也改变了方法的返回类型。如果你仍然需要IQueryable,你可以再次使用query。