gpt4 book ai didi

asp.net-mvc - LINQ Distinct()

转载 作者:行者123 更新时间:2023-12-03 12:27:51 24 4
gpt4 key购买 nike

我正在努力在LINQ中获取此sql查询的结果

SELECT DISTINCT(Type)
FROM Product
WHERE categoryID = @catID

这是我的存储库查询:
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;
}

过滤器:
public static IQueryable<ProdInfo> GetDistinctProdType(this IQueryable<ProdInfo> qry,int CatID)
{
return from p in qry
where p.CatID.Equals(CatID)
select p;
}

我需要过滤器来返回独特的产品类型吗?我怎样才能做到这一点?

最佳答案

就像这样:

public static IQueryable<ProdType> GetDistinctProdType(
this IQueryable<ProdInfo> query,
int categoryId)
{
return (from p in query
where p.CatID == categoryId
select p.Type).Distinct();
}

请注意,我已经更改了返回类型-它应该匹配 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();
}

关于asp.net-mvc - LINQ Distinct(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com