gpt4 book ai didi

c# - 转换为 LINQ To Entity 查询中的类型

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:43 25 4
gpt4 key购买 nike

我有这个 LINQ 查询

var Cities= (from city in AllCities
where (city.NumberOfCitizens > 1000)
select new
{
Mayor= (from mayor in AllMayors where mayor.CityKey == city.Key select mayor),
Name = city.Name,
Country = city.Country,
Key = city.Key
}).ToList();

我从我拥有 > 1000 名公民的城市中选择市长、姓名、国家和 key 。

Mayor 是一个具有 2 个属性的类 String FirstNameString LastName

现在我想对提取 FirstNameLastNameCities(这是第一个查询的结果)执行另一个查询拥有 key 的城市的市长 > 20

var Result= (from city in Cities
where (city.Key> 20)
select new
{
MayorFirstName = city.Mayor.FirstName,
MayorLastName = city.Mayor.LastName,
City = city.Name
}).ToList();

问题是我得到一个构建错误,city.Mayor 不包含 FirstNameLastName 的定义

我试图将其转换为查询中的 Mayor 类型:

Mayor= (Mayor)(from mayor in AllMayors where mayor.CityKey == city.Key select mayor),
.......

应用程序正常构建和启动,但出现运行时错误,无法转换为 LINQ 查询中的类型。

我该如何解决这个问题?有没有一种方法可以在查询内部进行强制转换,或者是否有其他解决方案。

非常感谢您的帮助

最佳答案

这部分查询的结果不是单个 Mayor对象,但是 IEnumerable<Mayor>

Mayor = (from mayor in AllMayors where mayor.CityKey == city.Key select mayor)

将此行更改为:

Mayor= (from mayor in AllMayors where mayor.CityKey == city.Key select mayor).FirstOrDefault()

那么 Mayor 属性将是单个 Mayor实例。

请注意,使用 FirstOrDefault如果没有找到市长,将返回 null,而 First()如果没有找到市长,将抛出异常。这两者之间的选择取决于您的情况。

关于c# - 转换为 LINQ To Entity 查询中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10248924/

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