【问题标题】:Return the result of joining two tables in Silverlight 4.0返回 Silverlight 4.0 中连接两个表的结果
【发布时间】:2012-08-09 09:16:31
【问题描述】:

主代码:

    DomainServiceAccountManager d = new DomainServiceAccountManager();
    EntityQuery<ListBuy> q = d.GetListMemberBuyQuery();
    LoadOperation<ListBuy> l = d.Load(q);
    DGListBuy.ItemsSource = l.Entities;

代码:

public IQueryable<ListBuy> GetListMemberBuy()
{
    var membuy =
    from mem in this.ObjectContext.Members
    from b in this.ObjectContext.Buys.Where(b => b.ID_member == mem.ID)
    .OrderByDescending(b => b.ID)
    .DefaultIfEmpty()
    select new { b.ID, mem.Name, b.Money, b.Tarikh };
    return membuy;
}

我收到以下消息:

Cannot implicitly convert type 'System.Linq.IQueryable&lt;AnonymousType#1&gt;' to 'System.Linq.IQueryable&lt;AccountManager.Web.ListBuy&gt;'. An explicit conversion exists (are you missing a cast?)

【问题讨论】:

  • 您无法将匿名类型的集合转换为 IQueryable

标签: visual-studio-2010 silverlight linq entity-framework-4 wcf-ria-services


【解决方案1】:

GetListMemberBuy 方法实际上返回匿名类型的 IQueryable,而不是 ListBuy 类型的 IQueryable。这些不相同,因此出现(编译时间?)错误。

我只能假设 ListBuy 也存在于数据库中,但如果存在,那么你可以删除匿名类型。

public IQueryable<ListBuy> GetListMemberBuy()
{
    var membuy =
    from mem in this.ObjectContext.Members
    from b in this.ObjectContext.Buys.Where(b => b.ID_member == mem.ID)
    .OrderByDescending(b => b.ID)
    .DefaultIfEmpty()
    select new ListBuy() { ID = b.ID, Name = mem.Name, Money = b.Money, Tarikh = b.Tarikh }; // <-- new ListBuy() !!
    return membuy;
}

如果数据库中不存在 ListBuy,则不能返回 IQueryable。也许这会奏效。

public IEnumerable<ListBuy> GetListMemberBuy()
{
    var membuy =
    from mem in this.ObjectContext.Members
    from b in this.ObjectContext.Buys.Where(b => b.ID_member == mem.ID)
    .OrderByDescending(b => b.ID)
    .DefaultIfEmpty()
    select new { b.ID, mem.Name, b.Money, b.Tarikh };
    return membuy
        .AsEnumerable()
        .Select(b => new ListBuy() { 
            ID = b.ID, Name = b.Name, Money = b.Money, Tarikh = b.Tarikh
        });
}

所有这些都是猜测,因为您没有在问题中包含 ListBuy 类定义。

【讨论】:

  • 名称'b'在当前上下文中不存在
  • 错误 1 ​​当前上下文 C:\Users\farzad\Documents\Visual Studio 2010\Projects\AccountManager\AccountManager.Web\DomainServiceAccountManager.cs 123 26 AccountManager 中不存在名称“b”。网络
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 2012-01-03
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
相关资源
最近更新 更多