asp.net-mvc – LINQ Distinct()

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – LINQ Distinct()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力在LINQ中获取SQL查询的结果
  1. SELECT DISTINCT(Type)
  2. FROM Product
  3. WHERE categoryID = @catID

这是我的存储库查询

  1. public IQueryable<ProdInfo> GetProdInfo()
  2. {
  3.  
  4. var data = from u in db.Prod
  5. select new ProdInfo
  6. {
  7. PID = u.PID,CatID = u.CatID,LastChanged = u.LastChanged,ChangedBy = u.ChangedBy,Type = u.Type,};
  8.  
  9. return data;
  10. }

过滤:

  1. public static IQueryable<ProdInfo> GetDistinctProdType(this IQueryable<ProdInfo> qry,int CatID)
  2. {
  3. return from p in qry
  4. where p.CatID.Equals(CatID)
  5. select p;
  6. }

我需要过滤器返回不同的prod类型?我该怎么办?

解决方法

就这样:
  1. public static IQueryable<ProdType> GetDistinctProdType(
  2. this IQueryable<ProdInfo> query,int categoryId)
  3. {
  4. return (from p in query
  5. where p.CatID == categoryId
  6. select p.Type).Distinct();
  7. }

请注意,我已经更改了返回类型 – 它应该匹配任何类型的ProdInfo.Type。

如果查询表达式本身相当简单,您可能会发现使用整个查询的扩展方法更易读:

  1. public static IQueryable<ProdType> GetDistinctProdType(
  2. this IQueryable<ProdInfo> query,int categoryId)
  3. {
  4. return query.Where(p => p.CatID == categoryId)
  5. .Select(p => p.Type)
  6. .Distinct();
  7. }

猜你在找的asp.Net相关文章