gpt4 book ai didi

asp.net-mvc - 如何在 Linq 查询中执行 If 语句

转载 作者:行者123 更新时间:2023-12-01 12:01:16 26 4
gpt4 key购买 nike

我目前有一个包含以下内容的列表

CountryCode (string)
CountryStr (string)
RegionStr (string)
RegionID (int)
AreaStr (string)
AreaID (int)

这是一组扁平化的链接数据(所以基本上是我存储的联合搜索的结果)

MVC 路由只会传递一个字符串,然后我需要将其与 heirachy 中正确级别的数据相匹配。因此,我正在尝试查询 CountryStr,如果它没有产生结果,则该区域然后该区域;但我需要做那部分查询,例如......

 var datURL = (from xs in myList
//query 1
where xs.RegionStr == rarREF
select new
{
regionID = xs.RegionId,
CountryID = xs.CountryCd
}
//IF theres no results
where xs.AreaStr == rarREF
select new
{
AreaID = xs.AreaID
regionID = xs.RegionId,
CountryID = xs.CountryCd
}
).ToList();

我目前看到的执行此操作的唯一方法是分别运行每个查询,然后检查哪些返回值并使用该值。我希望有更聪明、更清洁的方法。

最佳答案

它不会很容易阅读,但你可以使用类似这样的东西一次性完成:

var datURL = (from xs in myList
where xs.RegionStr == rarREF || xs.AreaStr == rarREF
select new
{
AreaID = (xs.AreaStr == rarRef ? xs.AreaID : default(int)),
RegionID = xs.RegionId,
CountryID = xs.CountryId
}
).ToList();

如果稍微重写查询,它也可能更容易阅读:

var datURL = (from xs in myList
let isArea = xs.AreaStr == rarREF
let isRegion = xs.RegionStr == rarREF
where isRegion || isArea
select new
{
AreaID = (isArea ? (int?)xs.AreaID : null),
RegionID = xs.RegionId,
CountryID = xs.CountryId
}
).ToList();

如果我们保存比较结果,我们以后可以重用它。我还向 int? 添加了一个强制转换,以展示如何使用可为 null 的值而不是使用 0 作为“无区域”值。

关于asp.net-mvc - 如何在 Linq 查询中执行 If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1153486/

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