首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linq查询中调用方法

在Linq查询中调用方法
EN

Stack Overflow用户
提问于 2012-04-02 02:00:42
回答 3查看 70.2K关注 0票数 41

我想在我的表中插入一个名为'S‘的列,它将根据从表列获得的值获得一些字符串值。

例如:for each ID (a.z),我想获取存储在另一个表中的字符串值。字符串值是从另一个通过Linq查询获得它的方法返回的。

  • 可以从Linq调用方法吗?
  • 应该在同一个查询中执行所有操作吗?

这是我需要得到的信息的结构:

a.z是表#1中第一个方框中的ID,从这个ID中我在表#2中得到另一个id,从这个id中我可以得到我需要在列'S‘下显示的字符串值。

代码语言:javascript
运行
复制
var q = (from a in v.A join b in v.B
    on a.i equals b.j
    where a.k == "aaa" && a.h == 0
    select new {T = a.i, S = someMethod(a.z).ToString()})
    return q;

导致以下错误的行S = someMethod(a.z).ToString()

无法将“'System.Data.Linq.SqlClient.SqlMethodCall'.”类型的对象转换为‘System.Data.Linq.SqlClient.SqlMethodCall’.类型的

EN

Stack Overflow用户

发布于 2012-04-02 02:15:15

你会想把它分成两个陈述。返回查询的结果(这将击中数据库),然后在单独的步骤中第二次枚举结果,将转换转换为新的对象列表。第二个“查询”不会击中数据库,因此您将能够在其中使用someMethod()

Linq到实体是一件有点奇怪的事情,因为它使从C#查询数据库的转换非常无缝:但是您必须始终提醒自己,“这个C#将被转换成一些SQL。”因此,您必须扪心自问,“所有这些C#实际上能作为SQL执行吗?”如果它不能--如果你在里面调用someMethod() --你的查询就会有问题。通常的解决办法是把它分开。

(使用.AsEnumerable()的@BrokenGlass的另一个回答基本上是另一种方法。)

票数 13
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9970100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档