我正在努力在LINQ中获取此SQL查询的结果
SELECT DISTINCT(Type)
FROM Product
WHERE categoryID = @catID
Run Code Online (Sandbox Code Playgroud)
这是我的存储库查询:
public IQueryable<ProdInfo> GetProdInfo()
{
var data = from u in db.Prod
select new ProdInfo
{
PID = u.PID,
CatID = u.CatID,
LastChanged = u.LastChanged,
ChangedBy = u.ChangedBy,
Type = u.Type,
};
return data;
}
Run Code Online (Sandbox Code Playgroud)
过滤:
public static IQueryable<ProdInfo> GetDistinctProdType(this IQueryable<ProdInfo> qry,int CatID)
{
return from p in qry
where p.CatID.Equals(CatID)
select p;
}
Run Code Online (Sandbox Code Playgroud)
我需要过滤器来返回不同的prod类型?我怎样才能做到这一点?
Jon*_*eet 37
就像这样:
public static IQueryable<ProdType> GetDistinctProdType(
this IQueryable<ProdInfo> query,
int categoryId)
{
return (from p in query
where p.CatID == categoryId
select p.Type).Distinct();
}
Run Code Online (Sandbox Code Playgroud)
请注意,我已经更改了返回类型 - 它应该匹配任何类型ProdInfo.Type.
如果查询表达式本身相当简单,您可能会发现对整个查询使用扩展方法更具可读性:
public static IQueryable<ProdType> GetDistinctProdType(
this IQueryable<ProdInfo> query,
int categoryId)
{
return query.Where(p => p.CatID == categoryId)
.Select(p => p.Type)
.Distinct();
}
Run Code Online (Sandbox Code Playgroud)
return (from p in qry
where p.CatId.Equals(CatID)
select p.Type).Distinct();
Run Code Online (Sandbox Code Playgroud)
这与您提供的SQL Query应该执行的操作相匹配.