如何使用LINQ来删除List中的Min和Max值

时间:2014-10-30 04:30:19

标签: c# linq list

我有一个如下所示的列表。

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时它可以工作吗?谢谢你的时间。

4 个答案:

答案 0 :(得分:5)

您应该使用where

from pair in temp
where pair < temp.Max() && pair > temp.Min()
select pair

您当前的方法将选择值是否在范围内,而不是过滤器。这就是where条款的用途。

答案 1 :(得分:4)

试试这个: -

var query = temp.Where(x => x != temp.Min() && x != temp.Max()).ToList();

工作Fiddle

答案 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();