0

したがって、次のようにlinqクエリを使用してデータを取得しているとしましょう:

DataContext db = new DataContext    

using(db)
{
    var test = from t in db.table1
               where t.col1 == Convert.ToInt32(HiddenField1.Value)
               select new
               {
                  t.col2,
                  t.col3
               };
}

次に、次のように条件が真でないかどうかを確認します。

if (col3 != something){ }

どうすればこれを達成できますか?

ありがとう

4

2 に答える 2

2

おそらく次のようなものが必要です。

DataContext db = new DataContext    

using(db)
{
    var test = from t in db.table1
               where t.col1 == Convert.ToInt32(HiddenField1.Value)
               select new
               {
                  t.col2,
                  CandyType = (t.col3 == "fudge") ? "It's Fudge" : "It's some other candy!"
               };

ただし、Entity Framework を使用すると、フレームワークが条件文を SQL に変換できないという問題が発生する場合があります。条件ステートメント内で実行するアクションに依存すると思いますが、EF に触れてからしばらく経ちました。条件文を SQL に変換できないことが判明した場合は、.ToList() または .ToArray() を呼び出して結果を具体化し、条件文を実行する必要があります。

于 2012-08-24T02:31:04.433 に答える
0

チェックがSQLで行われることになっている場合は、DaveMarkleによる回答が適している必要があります。返されたエンティティの一部にこのチェックを適用する場合は、次のようになります。

  1. オブジェクトを取得しますforeach

    foreach(var o in test) {
    if(o.col3!= something) { ... } }

  2. または、オブジェクトにlinqを使用します。

    test.ToList().Where(o=>o.col3!=something);

于 2012-08-24T03:13:14.883 に答える