2016-08-24 58 views
0

我有GenericRepository與方法最大的價格與LINQ和表達

public virtual IEnumerable<tentity> Get(
Expression<func<tentity, bool="">> filter = null, 
Func<iqueryable<tentity>, IOrderedQueryable<tentity>> orderBy = null, 
string includeProperties = "") 
{ 
    IQueryable<tentity> query = dbSet; 
    if (filter != null) 
    { 
    query = query.Where(filter); 
    } 
    foreach (var includeProperty in includeProperties.Split 
     (new char[] { ’,’ }, StringSplitOptions.RemoveEmptyEntries)) 
    { 
    query = query.Include(includeProperty); 
    } 
    if (orderBy != null) 
    { 
    return orderBy(query).ToList(); 
    } 
    else 
    { 
    return query.ToList(); 
    } 
} 

例如,我得到的產品:

var products = _database.ProductRepository.Get(
filter: d => d.Price == price.Value, 
orderBy: 
q => q.OrderBy(d => d.Name)); 

我如何獲得產品與最高出價? (也許像d.Max(d => d.Price)

回答

1

嘗試使用LINQ:

var product = from p in products 
       where p.Price == products.Max(s => s.Price) 
       select p; 
+0

感謝。有用。但是我必須在過濾之前獲得所有產品。我們有更好的LINQ選擇的另一種方式嗎? –

+0

我沒有明白。你是否試圖過濾沒有列表?你可以看到是否有一個過濾器作爲參數,並返回一個元素列表(過濾的)。 –