无法在silverlight中为查询形成select语句

时间:2011-07-19 11:08:25

标签: visual-studio-2010 silverlight-4.0 entity-framework-4

我想做点什么

  • 来自table1
  • 其中col5 =“abcd”
  • 选择col1

我确实喜欢

        query_ = From g In DomainService.GetGEsQuery Select New GE With {.Desc = g.codDesc}

“这导致运行时错误,我尝试了各种组合但失败了”

请帮忙。

2 个答案:

答案 0 :(得分:0)

我假设你试图在客户端这样做。如果是这样,你可以做这样的事情

          DomainService.Load(DomainService.GetGEsQuery().Where(g => g.codDesc == "something"), lo =>
            {
                if (lo.HasError == false)
                {
                    List<string> temp = lo.Entities.Select(a => a.Name).ToList();
                }
            }, null);

您也可以在服务器端(我个人更喜欢)这样做

        public IQueryable<string> GetGEStringList(string something)
        {

            return this.ObjectContext.GE.Where(g => g.codDesc == something).Select(a => a.Name);
        }

希望这有帮助

答案 1 :(得分:0)

DomainService.GetGEsQuery()返回IQueryable,仅在后续异步加载中有用。你在方法调用中缺少(),但这只是第一个问题。

您可以对使用Where等返回的查询应用过滤器操作,但仍需将其传递到域上下文的Load方法(在您的示例中称为DomainService) 。

示例Jack7已发布显示来自load方法的匿名回调,然后该方法访问加载对象lo内的结果,并仅使用其他查询提取所需字段。请注意,您可以在RIA服务中过滤查询,但不能更改基本返回类型(即,您无法在客户端过滤掉不需要的列)。

Jack7的第二个建议是实现特定方法服务器端,只返回您想要的数据,是您的最佳选择。