不支持Linq-To-Sql方法?

时间:2010-09-20 15:46:31

标签: .net linq-to-sql

我正在使用一个试图找到匹配的唯一标识符(guid)的查询,例如

var myUsers = from u in table
              where u.UniqueIdentifierId == MyClass.GetCurrentUserId()
              select u;

这会为我的自定义函数抛出Method Not Supported错误。我记录它来做这个

string guid = MyClass.GetCurrentUserId().ToString();

where u.UniqueIdentifierId.ToString() == guid

这很有效。我想知道是否还有其他不需要创建临时变量的工作。感谢。

2 个答案:

答案 0 :(得分:3)

您无法在查询中调用它,因为LINQ to SQL无法转换它。它试图在SQL调用中转换它。您必须做的是在LINQ查询之外调用此方法,如下所示:

var guid = MyClass.GetCurrentUserId();

var myUsers = 
    from u in table
    where u.UniqueIdentifierId == guid
    select u;

答案 1 :(得分:1)

你试过吗?

var myUsers = from u in table
          where u.UniqueIdentifierId == MyClass.GetCurrentUserId().ToString()
          select u;

这会强制LINQ to SQL使用字符串比较(这就是第二个工作的原因)