我基本上有一个List,里面有几列。我想要做的就是选择名为Counted
的列中具有最高int的List项。
List<PinUp> pinned= new List<PinUp>();
class PinUp
{
internal string pn { get; set; }
internal int pi{ get; set; }
internal int Counted { get; set; }
internal int pp{ get; set; }
}
所以基本上我只想要pinned[whichever int has highested Count]
希望这是有道理的
问题是我想从当前列表中删除此[具有高位数的int]。所以我不得不在数组中使用哪个int
答案 0 :(得分:2)
var excludingHighest = pinned.OrderByDescending(x => x.Counted)
.Skip(1);
如果您需要复制正在删除的副本并仍然需要删除它,您可以执行类似
的操作var highestPinned = pinned.OrderByDescending(x => x.Counted).Take(1);
var excludingHighest = pinned.Except(highestPinned);
答案 1 :(得分:2)
单程,按顺序排序:
PinUp highest = pinned
.OrderByDescending(p => p.Counted)
.First();
即使有多个具有最高Counted
的多个,也只返回一个。另一种方法是使用Enumerable.GroupBy
:
IEnumerable<PinUp> highestGroup = pinned
.GroupBy(p => p.Counted)
.OrderByDescending(g => g.Key)
.First();
如果您只想获得最高Counted
(我怀疑),您只需使用Enumerable.Max
:
int maxCounted = pinned.Max(p => p.Counted);
更新:
问题是我想从当前列表中删除这个[具有高位数的int]。
然后您可以使用List(T).RemoveAll
:
int maxCounted = pinned.Max(p => p.Counted);
pinned.RemoveAll(p => p.Counted == maxCounted);
答案 2 :(得分:1)
您可以订购:
var pin = pinned.OrderByDescending(p => p.Counted).FirstOrDefault();
// if pin == null then no elements found - probably empty.
如果你想删除,你不需要索引:
pinned.Remove(pin);
答案 3 :(得分:1)
尝试以下方法:
PinUp pin = pinned.OrderByDescending(x => x.Counted).First();
答案 4 :(得分:1)
这是一个排序问题。
按Counted
降序排列列表,然后选择第一项。
Linq有办法做到这一点:
var highest = pinned.OrderByDescending(p => p.Counted).FirstOrDefault();