LINQ GroupBy 根据 List 内的键 字典 在 List C# 中的字典内

本文关键字:字典 List GroupBy LINQ 根据 | 更新日期: 2023-09-27 18:32:21

我正在创建一个列表,其中包含字典的字典,用于从 wcf 服务使用它创建 Json。

我像这样创建:

List<Dictionary<string, Dictionary<string, Object>>> superduperList = new List<Dictionary<string, Dictionary<string, Object>>>();

我用数据填充它,Json 看起来像这样:

[
{
DepartureJ: {},
ReturnJ: {},
pricesDepartureJ: {},
pricesReturnJ: {},
DepartureSegmentsJ: {},
ArrivalSegmentsJ: {}
},
...,
...,
...,
...,
...,
]

起始数组是列表

第一个对象是字典词典和第一个字典中的对象再次是具有键/值对字符串/对象的字典(我使用对象,因为类型可以是布尔值或整数或字符串)现在,最后一关中的字典如下所示:

   "DepartureJ": {
        ArrivalDateTime: "2013-09-27T12:15:00",
        ArrivalDateTime_str: "12:15",
        StopQuantity: 0,
        StopQuantity_str: "Direct",
        TotalDuration: "50",
        TotalDuration_str: "0h 50mins",
        SeatsRemaining_str: "2",
        NoBag_str: "",
        NonRefundable: true,
        NonRefundable_str: "Non Refundable",
        FareBasisCode: "xxx-",
        RoutingId: "",
        GroupCompStr: "ATH-SKG-1xxxxxx-UOWA3--0",
        LineCompStr: "-2013-09xxxxxxxxxxxxxxxxxxxxxA3--3,0000000-1-0--",
        TotalAmount_From_Prices: 136.64
    }

现在我的问题是我如何从位于列表每个项目的每个词典的字典内的键TotalAmount_From_Prices中对外部列表进行排序?

我尝试使用 LINQ 使用分组,但不起作用或不知道如何:s

superduperList.GroupBy(each_result=> each_result["DepartureJ"]["TotalAmount_From_Prices"]);

如果我创建一个新列表或更改现有列表,那也没关系。

LINQ GroupBy 根据 List 内的键 字典 在 List C# 中的字典内

好吧,

实际上我以不同的方式做到了。

我创建了一个自定义类来保存数据,如下所示:

public class each_flight
{
    public Dictionary<string, object> DepartureJ = new Dictionary<string, object>();
    public Dictionary<string, object> ReturnJ = new Dictionary<string, object>();
    public Dictionary<string, object> pricesDepartureJ = new Dictionary<string, object>();
    public Dictionary<string, object> pricesReturnJ = new Dictionary<string, object>();
    public Dictionary<string, object> DepartureSegmentsJ = new Dictionary<string, object>();
    public Dictionary<string, object> ArrivalSegmentsJ = new Dictionary<string, object>();
    public double total_price;
}

然后我创建了:

List<each_flight> flights = new List<each_flight>();

然后我填充列表中的对象,然后使用额外的双total_price对它们进行排序,如下所示:

List<each_flight> Fligths_sorted = flights.OrderBy(o => o.total_price).ToList();

所以现在可以:)