Linq To Sql 复杂的子查询
Linq To Sql Sub Query Complex
tblItem
- 姓名
- 产品编号
tblProduct
- 姓名
- 产品编号
- 类别ID
tbl类别
- 姓名
类别ID
var itms = from item in CMP.tblItems
let t2s = (from g in CMP.tblProducts
where g.CategoryID==CatID
select g.ProductID)
where item.Name.Contains(Model) && item.ProductID.ToString() == t2s.ToString()
select new { item.Name };
我的问题是不止一种产品是 return 到 t2s(子查询)。如果我将 FirstOrDefault() 添加到子查询,那么它将只与一个产品 ID 匹配!我需要匹配它的所有 productid(s) returns.
试试这个:
var itms=from item in CMP.tblItems
from g in CMP.tblProducts
where item.Name.Contains(Model) && item.ProductID == g.ProductID && g.CategoryID == CatID
select new {item.Name};
使用 LINQ-to-SQL 为您创建的导航属性。 Item
应该有 属性 Product
。所以你可以简单地这样做:
var itms = from item in CMP.tblItems
where item.Name.Contains(Model) && item.Product.CategoryID = CatId
select new { item.Name };
tblItem
- 姓名
- 产品编号
tblProduct
- 姓名
- 产品编号
- 类别ID
tbl类别
- 姓名
类别ID
var itms = from item in CMP.tblItems let t2s = (from g in CMP.tblProducts where g.CategoryID==CatID select g.ProductID) where item.Name.Contains(Model) && item.ProductID.ToString() == t2s.ToString() select new { item.Name };
我的问题是不止一种产品是 return 到 t2s(子查询)。如果我将 FirstOrDefault() 添加到子查询,那么它将只与一个产品 ID 匹配!我需要匹配它的所有 productid(s) returns.
试试这个:
var itms=from item in CMP.tblItems
from g in CMP.tblProducts
where item.Name.Contains(Model) && item.ProductID == g.ProductID && g.CategoryID == CatID
select new {item.Name};
使用 LINQ-to-SQL 为您创建的导航属性。 Item
应该有 属性 Product
。所以你可以简单地这样做:
var itms = from item in CMP.tblItems
where item.Name.Contains(Model) && item.Product.CategoryID = CatId
select new { item.Name };