获取在一列上具有不同的列表的所有行

本文关键字:列表 一列 获取 | 更新日期: 2023-09-27 18:19:56

我有一个C#列表,其中有几列和几行数据,我试图通过在列表的一列上应用distinct来检索其中的几行。

例如,我在AxiomDS 类型的C# list AxiomSubSet中有以下数据

Month   Strk    Strg    Price   Amount
15-May  3.80    Put     0.0410  200
15-Apr  3.80    Put     0.0410  200
15-Mar  3.80    Put     0.0410  200
15-May  4.20    Put     0.0380  100
15-Apr  4.20    Put     0.0380  100
15-Mar  4.20    Put     0.0380  100
15-May  4.25    Call    0.0620  60
15-Apr  4.25    Call    0.0620  60
15-Mar  4.25    Call    0.0620  60

当我将一个方法应用于上面的list时,它应该是每个不同Strk的第一行,就像一样

Month   Strk    Strg    Price   Amount
15-May  3.80    Put     0.0410  200
15-May  4.20    Put     0.0380  100
15-May  4.25    Call    0.0620  60

并将上述数据存储在相同类型的临时列表中

我试过类似的东西

List<AxiomDS> listTempStrikes = new List<AxiomDS>();
listTempStrikes = AxiomSubSet.Select(x => x.strike).Distinct().ToList());

但由于明显的原因而不起作用。我能知道更好的处理方法吗?

获取在一列上具有不同的列表的所有行

您需要GroupBy

listTempStrikes = AxiomSubSet.GroupBy(x => x.Strk).Select(g => g.First()).ToList();

您也可以使用MoreLINQ库中的DistinctBy方法

listTempStrikes = AxiomSubSet.DistinctBy(x => x.Strk).ToList();