[英]LINQ to Entities Issue
using(SampleEntities entities = new SampleEntities()) {
var userMap = from ad in entities.SampleGroupsSet
from uid in distinctUserIDs
where ad.ShortUserID.ToLower() == uid.ToLower()
select new {shortID = uid, longID = ad.UserID};
string userID = "sampleId";
var longIDs = from map in userMap
where map.shortID.ToLower() == userID.ToLower()
select map.longID;
if (longIDs != null && longIDs.Count() > 0)
{
...
}
...
我遇到了一个问题,如果我要查询longID的计数,则会出现异常:
“无法创建类型为'Closure type'的常量值。在这种情况下,仅支持基本类型(例如Int32,String和Guid')。
有人遇到过这个吗? 谢谢。
你有两个问题。 这个:
uid.ToLower()
...无法转换为SQL。 这个:
where map.shortID.ToLower() == userID.ToLower()
做不区分大小写的限制的错误方法。 它使用索引失败,并导致您引用的问题。 相反,请执行以下操作:
where map.shortID.Equals(userID, StringComparison.OrdinalIgnoreCase) // or whatever...
第二个问题:您似乎正在尝试“在其中”。 但这是错误的方式。 在EF 4中,您可以执行以下操作:
where distinctUserIDs.Contains(ad.ShortUserID)
在EF 1中涉及更多 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.