2011-02-25 102 views
1

我有一個EF模型,我可以從中選擇要在ASP.NET中呈現的數據的子集。當我呈現這個輸出時,我循環返回的對象。我想知道什麼時候呈現具有最高價值的對象(以不同的格式)。將屬性賦值給EF模型,以便對象知道它是最大的

ObjectTable 
Category Item Value 
X   A 1.0 
X   B 14.0 
X   C 9.0 
Y   D 18.0 

我可以回到我想查看與項目:

var obj = from o in ObjectTable where Category=="X" select o; 

我想知道B具有最高的價值。

我對這種情況非常靈活我只是無法想出一個合理的解決方案。我是否應該修改LINQ語句來添加創建obj.IsMax變量的LET語句,以及如果o.Value == o.Max使其成爲TRUE並將所有其他對象設置爲FALSE,那麼該如何?這條路線好像會很貴?

或者我可以用分部類擴展EF模型,並以某種方式計算模型值是否等於返回對象的最大值?

或者完全不同的東西?

回答

0
var obj = (ObjectTable.Where(o => o.Category == "Y")); 
var anonymousObjList = obj.Select(o => new {o, IsMax = (o.Value == obj.Max(x => x.Value))}); 

和循環直通anonymousObjList

foreach(var obj in anonymousObjList) 
{ 
    var actualObject = obj.o; 
    var isMax = obj.IsMax; 
} 
+0

感謝您的快速回復。對不起剛剛意識到我的例子中有一個錯字,這使得它不太清楚。我將調整並解釋 – ChrisT 2011-02-25 01:55:43

+0

您的示例中的IsMax正在比較表中所有值的最大值,而不僅僅是查詢返回的類別中的值,這正是我需要的 – ChrisT 2011-02-25 01:58:49

+0

Oops錯過了這一點。編輯! – 2011-02-25 02:02:51