2010-12-11 5 views
0

これはLINQの簡単な左外部結合です(MSの例のように)。 それはLINQPadに良い作品:LINQ式はLINQPadでうまく動作しますが、Silverlightでは空の結果を返します

from x in Nevtars 
join c in Tetsziks on x.NevtarID equals c.NevtarID into ctemp 
from subc in ctemp.DefaultIfEmpty() 
select new { x.Nev, subc.Tetszes } 


The result: 
----------------- 
Nev Tetszes 
Őszike 1 
Őzike null 
Pintyőke null 
Regő  null 
Rezső null 
Szellő null 
Szellőke 2 

このexpresionシルバーDomainSource側に:

public IQueryable<MyP> GetTetszik() 
{ 
var q2 = from x in this.Context.Nevtars 
join c in this.Context.Tetszik on x.NevtarID equals c.NevtarID into ctemp 
from subc in ctemp.DefaultIfEmpty() 
select new MyP 
{ 
    Nev = x.Nev, 
    Tetszes = (subc == null ? 0 : (Int32)subc.Tetszes) 
}; 
return q2; 
} 

public class MyP 
{ 
    [Key] 
    public string Nev { get; set; } 
    public int Tetszes { get; set; } 
} 

そして、 "エンティティ側" に:

DomainService1 ctx2 = new DomainService1(); 
xxxGrid.ItemsSource = ctx2.MyPs; 
var q2 = ctx2.GetTetszikQuery(); 
ctx2.Load(q2); 

結果が空のグリッドになります... :(

助けてください! ありがとう!

答えて

0

ドメインサービスは、ItemsSourceが変更をキャッチする方法を提供していますか?そうでない場合は、データベースからデータを取得した後にItemsSourceに再割り当てしてください。

+0

ItemSourceが変更をキャッチしましたが、再割り当てしようとしましたが、結果は同じです。私はシンプルな最初のテーブルを選択してから2番目のテーブルを選択してから、グリッドがテーブルの単純な結果を得ようとしました。 – karist

+0

結果として、割り当てが良好です。 – karist

関連する問題