C# 当linq查询时,保持范围的更好选择是什么
我需要保存一组整数范围,以便使用linq查询它们,如下所示:C# 当linq查询时,保持范围的更好选择是什么,c#,asp.net,linq,collections,dictionary,C#,Asp.net,Linq,Collections,Dictionary,我需要保存一组整数范围,以便使用linq查询它们,如下所示: int param = 10; var matched = from item in items where param >= item.min && param <= item.max; int参数=10; var matched=来自项目中的项目 其中param>=item.min&¶m为什么不是一个简单的二维数组?这将具有最低的内存需求,并且您建议的LINQ查询将在线
int param = 10;
var matched = from item in items
where param >= item.min && param <= item.max;
int参数=10;
var matched=来自项目中的项目
其中param>=item.min&¶m为什么不是一个简单的二维数组?这将具有最低的内存需求,并且您建议的LINQ查询将在线性时间内执行
伪代码:
int param = 10;
// Define min and max array indices for readability.
public const int min = 0;
public const int max = 1;
int[,] myValues = {
{ 1, 50 },
{ 2, 3 },
{ 5, 60 }};
var matches =
from item in myValues
where param <= item[min] &&
param >= item[max];
int参数=10;
//为可读性定义最小和最大数组索引。
公共常数int min=0;
公共常数int max=1;
int[,]myValues={
{ 1, 50 },
{ 2, 3 },
{ 5, 60 }};
变量匹配=
从myValues中的项
其中参数=项目[max];
A列表
最明显。。。有点取决于你(想)怎么做制作它们。自定义类的优点是,您可以使它成为一个对如此少量数据更有效的结构。@HenkHolterman:列表是类的一个静态字段,成员是在设计时添加的。@mohsen.d由2个整数组成的结构数组也具有类似的低内存要求,和我建议的阵列解决方案一样高性能。但是,您在问题中明确拒绝创建一个新类,因此我不建议这样做!实际上,双数组会很好,唯一的一点是你必须做一个乘法来找到内部数组中的正确位置,但是它们就像1个记号。结构也可能有其他缺点。