如何在List<>中选择max使用Linq

时间:2015-12-29 12:50:11

标签: c# linq

我第一次使用Linq而且我遇到了问题。问题是我想在条件下从表中获取Random 20值。我的病情是 获取PercentageValue <= 0.5 && PercentageValue >= 90的最大值 获取PercentageValue <= 0.5 && PercentageValue >= 90的最小值 我的问题是如果我使用.Max()它将如何获取值只返回一个值,但如果你显示表值0.5不止一次。 我想要的是: - 我想要的第一个我得到List&lt;&gt;最大值然后列出&lt;&gt;最小值然后我从这个列表中得到随机值。

我的数据表设置如下:

ID  ImageName         PercentValue
1   0.5%A (0.4).png     0.5
2   0.5%B (0.5).png     0.5
3   0.5%C (0.4).png     0.5
4   0.5%D (0.4).png     0.5
5   0.5%E (0.4).png     0.5
6   0.5%F (0.4).png     0.5
7   1%A (0.9).png       1
8   1%B (0.9).png       1
9   1%C (1.1).png       1
10  1%D (1.1).png       1
11  1%E (0.9).png       0.9
12  1%F (1.0).png       1
13  10%A1 (9.5).png     10
14  12%A1 (12.1).png    12
15  15%A1 (15.4).png    15
16  15%A2 (13.7).png    15
17  20%A1 (19.9).png    20   
18  21%.png             92
19  derr.png            94

我的代码

var intMax = db.ImageSettings.Max(r => r.PercentageValue <= 0.5 && r.PercentageValue >= 90);

 var listMin = db.ImageSettings.Min(r => r.PercentageValue <= 0.5 && r.PercentageValue >= 90);

2 个答案:

答案 0 :(得分:2)

使用此

var Max = collection.Where(x => x.Percentvalue == collection.Where(a=>a.Percentvalue>=0.5 && a.Percentvalue<=90 ).Max(y => y.Percentvalue));
var Min = collection.Where(x => x.Percentvalue == collection.Where(a=>a.Percentvalue>=0.5 && a.Percentvalue<=90 ).Min(y => y.Percentvalue));

答案 1 :(得分:1)

var maximums = table.Where(x => x.PercentValue == table.Where(a=>a.PercentValue>=0.5 && a.PercentValue<=90 ).Max(y => y.PercentValue));
var minimums = table.Where(x => x.PercentValue == table.Where(a=>a.PercentValue>=0.5 && a.PercentValue<=90 ).Min(y => y.PercentValue));
var rnd = new Random();
var result = maximums.Union(minimums).OrderBy(id => rnd.Next()).Take(20).ToList();