2016-10-12 8 views
0

は私が今ボタンをクリックすると上のリストからのDataContextを取得するのDataContextオブジェクトタイプは考え

(from A in a1 join X in x1 on A.a equals X.x select new {A.b, A.c, X.y, X.z} 

、リストののItemsSourceのために参加を実行する2つのクラス

Class A 
{ 
    var a,b,c; 
} 
Class X 
{ 
    var x,y,z; 
} 

を持っている結果

var v = (Button)sender.DataContext as ??? 

DataContextには、次のようなクラスが次のように生成されているはずです電子のLINQ操作

Class ??? 
{ 
    var b,c,y,z; 
} 

は、誰もがこのLINQからデータを取得するために途中で助けることができますので、私はちょうどいくつかのオブジェクトを使用して、代わりにあなたのLINQクエリで匿名のオブジェクトを作成するので

v.b 
v.c 
v.y 
v.z 

答えて

0

ダイナミックタイプを使用してみてください。

var v = (Button)sender.DataContext as dynamic; 
 

 
//Then access the values as v.b, e.t.c

+0

ありがとう..働いて..これは私が探していたものです。 – fujinman

+0

あなたは一番歓迎されています。それが助けになったら、あなたはそれに投票することができます... – Owuor

+0

私はしたいが、私はそうするために15の評判が必要...私はそれに達すると確信して投票する... – fujinman

0

にアクセスすることができ、クラス を生成あなた自身によって定義されます。

public class MyData 
{ 
    public int b { get; set; } 
    public int c { get; set; } 
    public int y { get; set; } 
    public int z { get; set; } 
} 

、その後

from A in a1 
join X in x1 on A.a equals X.x 
select new MyData() 
{ 
    b = A.b, 
    c = A.c, 
    y = X.y, 
    z = X.z 
} 

また性質がvar prop { get; set; }ように宣言されている場合、あなたがclassを作成できないことに、注意してください。ローカル変数を宣言するときにのみキーワードvarを使用できます。

+0

このおかげで...この作品は...私は多くのデータの組み合わせを使用していますが、結合ごとにさまざまなクラスの組み合わせを作成し続けたい上記の「動的」クラスは簡単です。 – fujinman

+0

@funjinmanあなたに最も役立つ答えを見つけられたらうれしいです:-) –

0

あなたは間違って匿名オブジェクトを作成しています。

select new {A.b, A.c, X.y, X.z} 

代わりに、あなたは、VBを使用してプロパティにアクセスすることができます

select new {b=A.b, c=A.c, y=X.y, z=X.z} 

を書き込む必要があり、VCなど

(それがすべてで働いていた場合)あなたが作成したオブジェクトは、名前の空のプロパティを作成しました'A.b'、 'A.c'、 'X.y'、 'Xz'