1

我有一组 5 个参数,一个范围和实际值的两个上限和两个下限。在我的 Linq-to-Entites 查询中,我希望能够根据值在范围内的位置返回一个整数。

例如:

if (value > highest limit || value < lowest limit) return 6;
if (value < highest limit && value > 2nd high limit || value > lowest limit && value < 2nd lowest limit) return 5;
else if (value < 2nd highest limit && value > 2nd lowest limit) return 4;

查询将是:

var list = from item in ObjectContext.Plants
           where item.ID == ID
           select new Model()
           {
               ID = item.ID,
               Name = item.Name,
               Status = CalculateWhereInRange(item.numericValue, item.UpperHighLimit, item.LowerHighLimit, item.UpperLowLimit, item.LowerLowLimit)
           };
return list;

编辑

查询在服务器端被调用,并将数据传递回视图模型。这可以通过存储函数或sql函数来实现吗?

4

2 回答 2

0

存储您的五个参数:

    item.numericValue, item.UpperHighLimit, item.LowerHighLimit, item.UpperLowLimit, item.LowerLowLimit

在模型类的五个属性中,然后在模型的构造函数中,您可以应用 CalculateWhereInRange() 的逻辑

喜欢

    var list = from item in ObjectContext.Plants
    where item.ID == ID
    select new Model()
       {
           ID = item.ID,
           Name = item.Name,
           NumericValue = item.numericValue, 
           UpperHighLimit = item.UpperHighLimit
           LowerHighLimit = item.LowerHighLimit
           UpperLowLimit =  item.UpperLowLimit
           LowerLowLimit = item.LowerLowLimit
       };



     public class Model()
     {
           public int UpperHighLimit {get;set;} //And all the others
           public Model()
           {
              //Do Calculations here with your 5 properties
           }
     }
于 2012-11-12T15:39:46.937 回答
0

GetRangeStatus向项目的类本身添加一个方法。然后你可以像这样使用它

var list = from item in ObjectContext.Plants
           where item.ID == ID
           select new Model()
           {
               ID = item.ID,
               Name = item.Name,
               Status = item.GetRangeStatus() // <====
           };
return list;

不需要传递任何参数,因为所有需要的值都存储在item.

于 2012-11-12T15:48:54.590 回答