1

範囲と実際の値の2つの上限と2つの下限の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

5つのパラメータを保存します。

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

Modelクラスの5つのプロパティで、モデルのコンストラクターで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 に答える