如何在泛型列表中过滤两个值

本文关键字:两个 过滤 泛型 列表 | 更新日期: 2023-09-27 18:12:23

我不知道这个问题用什么标题更好。如何从通用列表中使用两个数字之间的比较获得数据?使用Linq或其他有效的方法。

例如:我有一个类数据库通用列表:

gems.Add (new gem ("A", 0, 15, 1));
gems.Add (new gem ("B", 16, 46, 2));
gems.Add (new gem ("C", 47, 107, 3));
gems.Add (new gem ("D", 108, 228, 4));

With parameter (Code, time1, time2, gemspent)

我想要的是选择一个gemspend或代码之间的两个数字从gems通用列表

//------------------------------------------------------------------------------------------------------------------------------------------------------//

示例:

当我输入5 =>这将得到列表中的"A"(这个5>= 0 &&& lt; =这是在A范围内)

当我输入16 =>这将得到列表中的"B"(这个16是>= 16 &&<= 46 This within B range)

//------------------------------------------------------------------------------------------------------------------------------------------------------//

迄今为止我所做的努力:

Gem = gDatabase.gems.Where (j => {return j.time1 >= 5 && j.time2 <= 5; }).Select (j => j.gemspent).Sum();
return 0;
Gem = gDatabase.gems.FindIndex(j => {return j.time1 >= 15 && j.time2 <= 15; });
return -1;

感谢丹尼斯

如何在泛型列表中过滤两个值

我得到了我自己的解决方案,这只是我犯的一个简单的错误。

只需更改下面的代码:

 Gem = gDatabase.gems.Where (j => {return j.time1 >= 5 && j.time2 <= 5; }).Select (j => j.gemspent).Sum();

:

 Gem = gDatabase.gems.Where (j => {return 5 >= j.time1 && 5 <= j.time2; }).Select (j => j.gemspent).Sum();

只需更改下面的代码:

 Gem = gDatabase.gems.FindIndex(j => {return j.time1 >= 15 && j.time2 <= 15; });

:

 Gem = gDatabase.gems.FindIndex(j => {return 5 >= j.time1 && 5 <= j.time2; });