C#.NET排序方法(过滤最小值和最大值)
我对泛型列表使用.net排序方法。例如:C#.NET排序方法(过滤最小值和最大值),c#,.net,sorting,C#,.net,Sorting,我对泛型列表使用.net排序方法。例如: MyList.Sort(); 是否可以使用.net对列表进行排序,同时考虑最小值和最大值?例如,如果我想对列表进行排序,同时只显示小于“value1”但大于“value2”的列表项 大概是这样的: MyList.Sort.Where(MyList > 50 & MyList < 30); MyList.Sort.Where(MyList>50&MyListr>50&&rr); 我认为您的示例将产生零结果,因为没有任何结果大于50且
MyList.Sort();
是否可以使用.net对列表进行排序,同时考虑最小值和最大值?例如,如果我想对列表进行排序,同时只显示小于“value1”但大于“value2”的列表项
大概是这样的:
MyList.Sort.Where(MyList > 50 & MyList < 30);
MyList.Sort.Where(MyList>50&MyList<30);
我认为您的示例将产生零结果,因为没有任何结果大于50且小于30。但假设那只是一个打字错误,这就是你想要的吗
List<int> s = new List<int>();
s.Where(r => r > 50 && r < 30).OrderBy(r => r);
List s=新列表();
s、 式中(r=>r>50&&r<30).OrderBy(r=>r);
我认为您的示例将产生零结果,因为没有任何结果大于50且小于30。但假设那只是一个打字错误,这就是你想要的吗
List<int> s = new List<int>();
s.Where(r => r > 50 && r < 30).OrderBy(r => r);
List s=新列表();
s、 式中(r=>r>50&&r<30).OrderBy(r=>r);
您可以使用Linq扩展
// top of code file
using System.Linq;
// code
var filteredSortedList = MyList.Where(x => x > 30 && x < 50).OrderBy(x => x);
// filters values between 30 and 50 not inclusive
// sorts the results
//代码文件的顶部
使用System.Linq;
//代码
var filteredSortedList=MyList.Where(x=>x>30&&x<50).OrderBy(x=>x);
//过滤介于30和50之间的值(不包括在内)
//对结果进行排序
请注意,原始列表MyList没有更改,而是将结果分配给一个新变量。此外,在对结果执行某些操作(如调用ToList或枚举)之前,操作将被延迟。您可以使用Linq扩展
// top of code file
using System.Linq;
// code
var filteredSortedList = MyList.Where(x => x > 30 && x < 50).OrderBy(x => x);
// filters values between 30 and 50 not inclusive
// sorts the results
//代码文件的顶部
使用System.Linq;
//代码
var filteredSortedList=MyList.Where(x=>x>30&&x<50).OrderBy(x=>x);
//过滤介于30和50之间的值(不包括在内)
//对结果进行排序
请注意,原始列表MyList没有更改,而是将结果分配给一个新变量。此外,在对结果执行某些操作(如调用ToList或枚举)之前,操作将被延迟。您可以使用linq查询来完成此操作
MyList = MyList
.Where(x => x > 50 && x < 30)
.OrderBy(x => x)
.ToList();
MyList=MyList
其中(x=>x>50&&x<30)
.OrderBy(x=>x)
.ToList();
请注意,x>50&&x<30
将不匹配任何项目。所以你可能想写
MyList.Where(x => x > 30 && x < 50).OrderBy(x => x);
MyList.Where(x=>x>30&&x<50).OrderBy(x=>x);
这将删除任何低于30且大于50的项,您可以使用linq查询
MyList = MyList
.Where(x => x > 50 && x < 30)
.OrderBy(x => x)
.ToList();
MyList=MyList
其中(x=>x>50&&x<30)
.OrderBy(x=>x)
.ToList();
请注意,x>50&&x<30
将不匹配任何项目。所以你可能想写
MyList.Where(x => x > 30 && x < 50).OrderBy(x => x);
MyList.Where(x=>x>30&&x<50).OrderBy(x=>x);
这将删除任何低于30且大于50的项。在对列表进行排序后,您可以使用LINQ对其进行筛选。在您的情况下,
SkipWhile
和TakeWhile
似乎很有用:
List<int> MyList = ....
// sort
MyList.Sort();
// filter:
var result = MyList.SkipWhile(i => i < 30).TakeWhile(i => i < 50).ToList();
请注意,我假设您的条件是一个输入错误,没有编号
I<30&&I>50
对列表排序后,可以使用LINQ对其进行筛选。在您的情况下,SkipWhile
和TakeWhile
似乎很有用:
List<int> MyList = ....
// sort
MyList.Sort();
// filter:
var result = MyList.SkipWhile(i => i < 30).TakeWhile(i => i < 50).ToList();
请注意,我假设您的条件是一个键入,没有数字
I<30&&I>50
Hi您可以如下所示
var res = MyList.Where(val => val > minVal && val < maxVal).OrderBy(num=>num).ToList();
var res=MyList.Where(val=>val>minVal&&valnum.ToList();
您不需要对列表进行排序,orderby将为您进行排序您好,您可以执行以下操作
var res = MyList.Where(val => val > minVal && val < maxVal).OrderBy(num=>num).ToList();
var res=MyList.Where(val=>val>minVal&&valnum.ToList();
您不需要对列表进行排序,orderby将为您进行排序此版本应适用于大多数.net平台版本
System.Collections.Generic.List<int> items = new List<int>();
Predicate<int> FilterMethod = delegate (int item) { return item < 50 && item > 30; };
items.FindAll(FilterMethod).Sort();
System.Collections.Generic.List items=new List();
谓词筛选器方法=委托(int项){返回项<50&&item>30;};
items.FindAll(FilterMethod.Sort();
此版本应适用于大多数.net平台版本
System.Collections.Generic.List<int> items = new List<int>();
Predicate<int> FilterMethod = delegate (int item) { return item < 50 && item > 30; };
items.FindAll(FilterMethod).Sort();
System.Collections.Generic.List items=new List();
谓词筛选器方法=委托(int项){返回项<50&&item>30;};
items.FindAll(FilterMethod.Sort();
什么是只显示列表项…的意思?是否要删除范围之外的?是否要创建子集?如何回答?回答时请澄清OP在寻找什么,考虑基于你的理解的问题。到目前为止,还不清楚预期输出是什么(即,{1,37,35100}->{35,37}或{1100}或{1,35,37100}或{1,35,37100}+打印35,37)。什么是仅显示列表项…
的意思?是否要删除范围之外的?是否要创建子集?如何回答?回答时请澄清OP在寻找什么,考虑基于你的理解的问题。到目前为止,还不清楚预期的输出是什么(即{1,37,35100}->{35,37}或{1100}或{1,35,37100}或{1,35,37100}+打印35,37)。值得注意的是,这个表达式并没有改变原始列表。您希望使用该表达式的返回值。值得注意的是,该表达式不会更改原始列表。您想使用该表达式的返回值。为什么不同时使用.OrderBy(@object=>@object)
使其更容易混淆:)确实没有很好的理由将var
用作var名称(即使语法上完全可以接受)@Maddy:我想Alexei是想说明一点,即有一个名为var
的局部变量可能会引起混淆。我必须承认我认为这是非法的,但显然不是。@Chris:谢谢你的解释,你可以使用任何变量名。我习惯于在大多数情况下使用var变量名bad@Maddy:没问题。有时,如果您还没有看到问题,那么更为间接的评判答案的方法可能会有点难以理解。为什么不也使用。OrderBy(@object=>@object)
使其更为混乱:)真的没有很好的理由将var
用作var名称(即使语法完全可以接受)@Maddy:我想Alexei是想说明一点,即有一个名为var
的局部变量具有潜在的