首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linq to entities:嵌套.Any()

linq to entities:嵌套.Any()
EN

Stack Overflow用户
提问于 2011-02-01 22:41:55
回答 1查看 2.4K关注 0票数 0

在存储库中,我需要在联系人(C)的特征中搜索在searchCriteria (sc)中定义的其他特征的集合。

代码语言:javascript
复制
// no Problem from here --->  
c => c.firstName.StartsWith(sc.FirstName)  
  && c.lastName.StartsWith(sc.LastName)  
  && c.addressData.Any(a => a.City.StartsWith(sc.City))  
  && c.addressData.Any(a => a.StreetAddr.StartsWith(sc.Street))  
  && c.addressData.Any(a => a.ZIPCode.StartsWith(sc.ZipCode))  
  && c.visit.Any(v=> v.vStartDate >= sc.VisitTimeIntervalStart)  
  && c.visit.Any(v => v.vStartDate <= sc.VisitTimeIntervalEnd)  
  // <-- to here  but this ->  
  && c.contact2feature.Any( 
      c2f => sc.FeaturePattern.Any(       
         ` fp => fp.Item1.featureID == c2f.feature.featureID))     
// thows:  System.Reflection.TargetInvocationException  
// Inner: Unable to process the type System.Tuple 2[], because it has no known mapping to the value layer.   
EN

回答 1

Stack Overflow用户

发布于 2011-02-01 23:28:05

sc.FeaturePattern似乎是一个Tuple,这意味着它不是实体模型/EDMX的一部分。因此LINQ to Entities不知道如何将其转换为SQL。但是你可以很容易地解决这个问题:

代码语言:javascript
复制
// extract scalar values from tuple
var featureIds = sc.FeaturePattern.Select(fp => fp.Item1.featureId);

// now do query
// ...
c => c.firstName.StartsWith(sc.FirstName)  
  && c.lastName.StartsWith(sc.LastName)  
  && c.addressData.Any(a => a.City.StartsWith(sc.City))  
  && c.addressData.Any(a => a.StreetAddr.StartsWith(sc.Street))  
  && c.addressData.Any(a => a.ZIPCode.StartsWith(sc.ZipCode))  
  && c.visit.Any(v=> v.vStartDate >= sc.VisitTimeIntervalStart)  
  && c.visit.Any(v => v.vStartDate <= sc.VisitTimeIntervalEnd)  
  // <-- to here  but this ->  
  && c.contact2feature.Any( 
      c2f => featureIds.Contains(       
          fid => fid == c2f.feature.featureID))   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4863896

复制
相关文章

相似问题

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