gpt4 book ai didi

c# - LINQ:根据另一个列表中元素上方的数学条件过滤列表

转载 作者:太空狗 更新时间:2023-10-29 23:12:09 27 4
gpt4 key购买 nike

我有一个实体列表,其中一个字段 (UtcOffset) 是一个数字。

我有一个过滤器列表 offsets,它是一个数字列表。

我想使用 LINQ 从第一个列表中选择 UtcOffset 字段等于或小于具有固定 delta 的过滤器列表中的值的所有实体> 添加了 (3600)。

我有一个代码只适用于“相等大小写”

public class TimeZone
{
public int Id { get; set; }
public string Name { get; set; }
public int UtcOffset { get; set; }
}


var delta = 3600;

List<TimeZone> TimeZones = new List<TimeZone>()
{
new TimeZone() {Id = 1, Name = "America/Tortola", UtcOffset = -14400},
new TimeZone() {Id = 2, Name = "Asia/Kathmandu", UtcOffset = 20700},
new TimeZone() {Id = 3, Name = "Asia/Kolkata", UtcOffset = 19800},
new TimeZone() {Id = 4, Name = "Africa/Tunis", UtcOffset = 3600},
new TimeZone() {Id = 5, Name = "Africa/Windhoek", UtcOffset = 7200},
new TimeZone() {Id = 6, Name = "Europe/Simferopol", UtcOffset = 10800},
}

List<Int32> offsets = new List<Int32>()
{
3600, -10800, -14400
};

var matchedList = TimeZones.Where(t => offsets.Contains(t.UtcOffset)).ToList();

它返回 ID 为 1 和 4 的实体。

我想选择 ID 为 1、4、5 的实体(UtcOffset 小于或等于 3600 + delta、-10800 + delta, -14400 + delta).

如何修改我的 LINQ 表达式以匹配这种情况?

最佳答案

如果您希望它更有效地工作,只需使用它(归功于@yawnobleix 发现这一点,尽管它确实需要 Max() 而不是 Min()):

var matchedList = TimeZones.Where(t => t.UtcOffset <= (offsets.Max() + delta)).ToList();

关于c# - LINQ:根据另一个列表中元素上方的数学条件过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56539590/

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