0

初めてLINQを使用していますが、次のクエリがあります。

var query = from c in context.Call
            join d in context.CallData on c.CallID = d.CallID
            where c.CallID == 123
            select new {
               c.CallID,
               c.CallResult,
               d.FieldID,
               d.FieldValue
            };

これにより、次のようなデータが返されます

c.CallID    c.CallResult   d.FieldID    d.FieldValue
  123         Sale           345          John
  123         Sale           346          Doe
  123         Sale           347          888-222-3333

d.FieldID = 346 を含む行にドリルダウンして、d.FieldValue (346 は LastName フィールド) の値を取得するにはどうすればよいですか? この値をローカル変数の新しい値として使用したいと思います。

// I know this doesn't work, just showing what I would like to accomplish
string LastName = query.Select(a => a.FieldID = 346).FieldValue;

逆に、これらの結果を取得したら、c.CallResult の値を変更するにはどうすればよいですか? これは結合なので、1 行のデータを変更するだけでよいですか、それとも別のクエリを実行する必要がありますか?

4

2 に答える 2

0

query最初の質問については、変数から先に進むことができます。

var fieldValue = query.Where(x => x.FieldID == 346).Single().FieldValue;

2番目の質問については、元のエンティティオブジェクトに変更を適用する必要があります。

var call = context.Find(123);
// or context.Calls.Single(c => c.CallId == 123) if this is not DbContext.
call.CallResult = newValue;
context.SaveChanges();
于 2012-10-24T22:15:15.867 に答える
0

つまり:

string LastName = query
                 .Where(a => a.FieldID = 346)
                 .Select(a => a.FieldValue)
                 .FirstOrDefault();
于 2012-10-24T18:39:02.727 に答える