【问题标题】:Assigning a property to an EF model so that an object knows it is ==max将属性分配给 EF 模型,以便对象知道它是 ==max
【发布时间】:2011-02-25 01:37:43
【问题描述】:

我有一个 EF 模型,我从中选择要在 ASP.NET 中呈现的数据子集。当我呈现这个输出时,我会遍历返回的对象。我想知道我何时呈现具有最高值的对象(以不同的格式设置它)。

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 模型并以某种方式计算模型值是否等于返回对象的最大值?

或者完全不同的东西?

【问题讨论】:

    标签: c# entity-framework asp.net-mvc-2 linq-to-entities


    【解决方案1】:
    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;
    }
    

    【讨论】:

    • 感谢您的快速回复。抱歉刚刚意识到我的示例中有一个错字,这使得它不太清楚。我会调整和解释
    • IsMax 在您的示例中是与表中所有值的最大值进行比较,而不仅仅是查询返回的类别中的值,这是我需要的
    猜你喜欢
    • 2020-05-22
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多