如何在通用List C#unity中过滤两个值?

时间:2016-10-09 03:43:20

标签: c# unity3d

我不知道这个问题的标题是什么。 如何使用通用列表中两个数字之间的比较从通用List获取数据?使用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));

使用参数(Code,time1,time2,gemspent)

我想要的是从宝石通用列表中的两个数字之间选择一个gemspent或代码。

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

我想要的例子:

  

当我输入5 =>这将得到列表中的“A”(这5是> = 0&&< =   15这是在A范围内)

     

当我输入16 =>这将得到列表中的“B”(这16是> = 16&&   < = 46这个B内范围)

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

到目前为止我的尝试:

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;

由于

丹尼斯

1 个答案:

答案 0 :(得分:0)

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

只需更改以下代码:

 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; });

修复它。