在Linq TO SQL C#中选择特定的子记录
本文关键字:记录 选择 Linq TO SQL | 更新日期: 2023-09-27 18:20:52
我有一个表,比如Category,包含以下字段:
cat_id、cat_name和cat_desc
我还有另一个具有以下字段的表格产品:
pro_id、cat_id、pro_name和pro_desc,is_finished
通常,如果我选择一个带有Linq-to-sql的类别,它会返回带有所有相关产品的类别。
但我想选择一个类别,但返回的产品应该是唯一一个is_finished值为true的产品。
任何建议/代码示例都将不胜感激。
您需要加入表:
select * from product p
left join Category c on c.cat_id = p.cat_id
where c.cat_name = 'yourcategory' and p.is_finished = 1
在linq到SQL:中
var query = from product in products
join category in categories on category.cat_id = product.cat_id
select new { product.is_finished = true, category.cat_name = "yourcategory" };
这可能是实现您所要求的最明智的方法:
var query = from product in products
select new {
product,
finishedCategories = product.categories.Where(c => c.is_finished)
};
这将创建一个包含您要查找的数据的匿名类型。请注意,如果您访问.product.categories
,您仍然可以获得该产品的所有类别(延迟加载)。但如果你使用.finishedCategories
,你只会得到已经完成的类别。