繁体   English   中英

LINQ实体发行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM