我有两张表 1) 产品 2) 类别
Product 表有一个名为“CategoryID”的字段,Category 表有一个名为“CategoryName”、ID、DateCreated 和其他一些字段。
我想使用 LINQ to SQL 来查询所有产品行以及 Category.CategoryName。此查询将在数据源中使用并绑定到 ListView。
我知道我可以将 LoadWith 选项与 DataContext 和连接一起使用。但问题是我最终得到了 Product 和 Category 中的所有行。我真正想要的是 Product 中的所有行,只是Category.CategoryName
完美的解决方案是,如果 LoadWith 选项允许您指定要返回的字段,但正如在此处回答的那样,这是不可能的。
我确实找到了一种方法,创建一个自定义类,它具有我想要返回的完全相同的字段。所以例如
public class ProductInfo
{
public string ProdName { get; set; }
public int ProdID { get; set; }
public int CategoryID { get; set; }
public string CategoryName { get; set; }
}
但问题是 select 语句最终很长。例如...
var products = from p in db.Products
join c in db.Categories on p.CategoryID = c.ID
select new ProductInfo { ProdName = p.ProdName, ProdID = p.ID,
CategoryID = p.CategoryID, CategoryName = c.CategoryName }
这变得非常容易出错。
所以我的问题 - 有没有更好的方法来做到这一点?
编辑/澄清:我应该提到我需要中间类的原因是因为我需要能够将结果集作为特定类型返回,在本例中为 ProductInfo