gpt4 book ai didi

asp.net-mvc - LINQ to Entities无法识别方法异常

转载 作者:行者123 更新时间:2023-12-04 13:28:41 25 4
gpt4 key购买 nike

我有这样的事情

SecuritySearcher sc = new SecuritySearcher();
Dictionary<string, bool> groupsMap =
sc.GetUserGroupMappings(domainName, currentUser, distGroups.ToList());

IQueryable<HotelTravel> groupq =
(from hotel in qHs
join hp in qHps on hotel.HotelTravelId equals hp.HotelTravelId
where !string.IsNullOrEmpty(hp.GroupName)
&& groupsMap.ContainsKey(hp.GroupName)
&& groupsMap[hp.GroupName] == true
select hotel);

在执行Linq语句时,它抛出异常说
LINQ to Entities无法识别方法“Boolean ContainsKey(System.String)”方法,并且该方法无法转换为商店表达式。

最佳答案

为了将您的表达式转换为数据库查询,数据库必须以某种方式知道字典的内容,并有一种从查询中访问它的方法。 SQL中没有字典机制,但这没关系,因为您只需要查找值是某个常数的键,就不需要字典。您可以将那组键转换为一个列表,然后查看该列表是否包含您要查找的内容:

var groupsList = (from kvp in groupsMap     // find all keys in groupsMap
where kvp.Value == true // where the value is set to True
select kvp.Key).ToList();

IQueryable<HotelTravel> groupq =
from hotel in qHs
join hp in qHps on hotel.HotelTravelId equals hp.HotelTravelId
where !string.IsNullOrEmpty(hp.GroupName)
&& groupsList.Contains(hp.GroupName)
select hotel;

我怀疑您的字典中实际上没有空字符串作为键,这意味着您可以摆脱 IsNullOrEmpty调用,而只需拥有 where groupsList.Contains(hp.GroupName)即可。

关于asp.net-mvc - LINQ to Entities无法识别方法异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8505497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com