我有一个如下所示的列表。
List<int> temp = new List<int> { 3, 5, 6, 8, 2, 1, 6};
我将使用LINQ删除Above List中的Min和Max值。
例如,下面的代码段只是示例,不起作用。
var newValue = from pair in temp
select pair < temp.Max() && pair > temp.Min()
希望,我希望结果如下;
newValue = {3, 5, 6, 2, 6 }
我尝试过谷歌搜索,但还没有找到合适的例子。
使用LINQ时它可以工作吗?谢谢你的时间。
答案 0 :(得分:5)
您应该使用where
。
from pair in temp
where pair < temp.Max() && pair > temp.Min()
select pair
您当前的方法将选择值是否在范围内,而不是过滤器。这就是where
条款的用途。
答案 1 :(得分:4)
答案 2 :(得分:0)
如果您只需要删除最小值和最大值,那么为什么不使用remove()?这对的需要是什么?
List<int> temp =new List<int>() { 3, 5, 6, 8, 2, 1, 6 };
temp.Remove(temp.Max());
temp.Remove(temp.Min());
或类似的东西,如果你需要保持临时性,宁愿在副本上工作
temp.Sort();
temp.Skip(1).Take(temp.Count - 2).ToList();
答案 3 :(得分:0)
你怎么能在Generic Collection中添加一个数组。您还必须将查询结果转换为列表。使用@Matthew Haugen建议的where
条款。
List<int> temp = new List<int>();// {3, 5, 6, 8, 2, 1, 6}
temp.Add(3);
temp.Add(5);
temp.Add(6);
temp.Add(8);
temp.Add(2);
temp.Add(1);
temp.Add(6);
List<int> newValue = (from n in temp
where n > temp.Min() & n < temp.Max()
Select n).ToList();