2009-07-22 13 views
1

ADO.Netデータサービスで私の手を試してください。すべての例ではリストの取得方法を示していますが、単一の値を取得するにはどうすればよいでしょうか?例えば製品Xの価格。ここでADO.NetデータサービスとLINQで単一値を選択

は私が使用してLINQクエリです: svcContext.Products p.ProductName == "椅子" & & p.Colour == 1 が選択 におけるpから

するvarたqry =( c)DataServiceQueryとして。

Product returnedProd;

qry.BeginExecute( (pr)=> returnedProd = qry.EndExecute(pr).First()、null);

ここで私は製品を取得してローカル変数にロードしようとしますが、ローカル変数はnullのままです。

かなり間違っています。私は完全に間違っています。)...どんな助けでも大歓迎です。

答えて

1

あなたがCを宣言しました(p.ProductName == "椅子" & & p.Colour == 1は、pを選択svcContext.Productsにおけるpから)

するvarたqry =であることを仮定しないのですか?

0

申し訳ありませんがDataServiceQueryとして( p.ProductName == "椅子" & & p.Colour == 1は、pを選択 svcContext.Productsにおけるpから)

するvar QRY =ことになりました<製品>;

0

First()結果セットが空の場合は例外をスローする必要があります。クエリが実行されていることも確かですか?

0

あなたは、すべてのSilverlight発信要求の非同期性に最初に遭遇するわけではありません。ラムダ式

(pr) => returnedProd = qry.EndExecute(pr).First() 

あなたはBeginExecuteが遅すぎるだろう呼び出された後スピンオフしますローカル変数returnedProdが、通常、スレッドをキャプチャします。実行が現在のメソッドの範囲外になった後に実行され、変数が失われる可能性があります。

解決策は、 "返されたプロット"を使用して、UIや何を行う必要があるかを入力することです。INラムダ式。ような何か:

(pr) => { 
    returnedProd = qry.EndExecute(pr).First(); 
    MessageBox.Show("Retrieved record" + returnedProd.Id); 
} 

コミュニティのためにそれ以外の場合に有用な答え、私は数週間前のものを持っていた希望:(

+0

コードのこの小さな作品を試してみて、少なくともMessageBox.Showあなたであれば、私たちに知らせて希望のデータを取得する.. –

関連する問題