0

私はlinq to sqlの学習過程にあります。

これらの次の条件をlinq to sqlで書くことは可能ですか?

条件1

var query1 = 
             if
             from q in db.Students
             q.fees =="paid" && q.activites == "good" && count == 0
             select q 

              save "OK" to the property result. 

          else 
             from q in db.Students
             q.fees =="paid" && q.activites == "good" && count == 2
             select q 
             save "better" to the property result. 

            else
            from q in db.Students
            q.fees =="paid" && q.activites == "good" && count > 2
            select q 
            save "bad" to the property result. 


  private string _result; 
  public string Result
    {
        get { return this._result; ; }
        set { this._result;  = value; }
    }

親切にガイド。

更新編集:

   var query1 =                  
             (from q in db.Students
             q.fees =="paid" && q.activites == "good" 
             select q).Any(); 

  if(count ==0 && query1 == true)
  {
    this.Result = "OK"
  }
  esle if(count == 2  && query1 == true)
  {
    this.Result = "better"
  }
  esle 
  {
    this.Result = "bad"
  }

これはアプローチになりますか?

4

2 に答える 2

1

これはすべてコード側であるため、LINQ クエリを実行した後、通常の if-else パターンを使用できます。

例:

var query1 =                  
         from q in db.Students
         q.fees =="paid" && q.activites == "good" 
         select q;

if(count ==0 && query1.Count() > 0)
{
    this.Result = "OK";
}
else if(count == 2  && query1.Count() > 0)
{
    this.Result = "better";
}
else 
{
    this.Result = "bad";
}     

ただし、LINQ はレコードが存在するかどうかを判断するために使用されているだけなので、.Any()メソッドの使用をお勧めします。

var recordsFound = db.Students.Any(q => q.fees =="paid" && q.activites == "good");

if(count == 0 && recordsFound)
{
    this.Result = "OK";
}
else if(count == 2 && recordsFound)
{
    this.Result = "better";
}
else 
{
    this.Result = "bad";
}
于 2013-04-12T15:03:27.717 に答える
0

常に同じ条件でクエリを実行しているように見えますが、条件に応じて反応しているのは、返された結果の数だけです。where 条件を使用して結果を取得し、結果カウントを if ステートメントで囲むことができます。

var count = (from q in db.Students
where q.fees == "paid" && q.activities == "good"
select q).Count();

if(count == 0){
     //do something
 }
 else if(count == 2){
     //do something 
 }
 ///etc...
于 2013-04-12T14:59:45.100 に答える