LINQ表达式在LINQPad中运行良好,但在Silverlight中返回空结果

时间:2010-12-11 18:29:29

标签: c# linq left-join

这是LINQ中的简单左外连接(如MS示例)。 它在LINQPad中运行良好:

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

Silverlight 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);

结果将是一个空格...... :(

请帮帮我! 谢谢!

1 个答案:

答案 0 :(得分:0)

域服务是否为ItemsSource提供了捕获更改的方法?如果没有,请在从数据库中获取数据后将其重新分配给ItemsSource