gpt4 book ai didi

C# LINQ - 在两个属性之间的列表中查找对象

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

我以前没有用过 LINQ,但我知道它有多高效。
我创建了一个包含对象的列表,您可以在下面看到:

public sealed class Item
{
public long Start { private set; get; }
public long End { private set; get; }
public Item(string start, string end)
{
this.Start = Convert.ToInt64(start);
this.End = Convert.ToInt64(end);
}
}

这将填充包含大约 20 万个项目的 DataSet
现在,我想在“开始”和“结束”属性之间选择最佳的单个项目。

this.ItemList.Add(new Item(100000, 100002));
this.ItemList.Add(new Item(100003, 100006));
this.ItemList.Add(new Item(100007, 100012));
this.ItemList.Add(new Item(100013, 100026));
this.ItemList.Add(new Item(100027, 100065));

从另一个工具,我得到了值:100009

如何使用 LINQ 返回对象 new Item(100007, 100012)?有人有什么建议吗?

最佳答案

听起来很简单 Where查询应该足够了:

long value = 100009;
var found = ItemList.Where(item => item.Start <= value && item.End >= value);

这将产生一个 IEnumerable<Item>包含所有匹配项。您可以使用 .First()/.FirstOrDefault()获取第一个匹配项或继续筛选结果,直到获得所需的项。

请注意,如果您确实有 20 万个条目,则列表可能不是最有效的搜索数据结构(您的复杂度为 O(n))。如果性能是个问题,您可能需要考虑 using a SortedList and a binary search algorithm instead .

关于C# LINQ - 在两个属性之间的列表中查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434474/

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