【问题标题】:Filter the Property of object using LINQ使用 LINQ 过滤对象的属性
【发布时间】:2011-03-14 09:29:41
【问题描述】:

我有一个场景,我必须使用 LINQ 过滤对象的属性。

编辑: 我有合同 列表 dtCntList = DTIsland.GenericHelper.ConvertArrayListToGenericList(getList(), true);

现在在合同中,我有各种财产。每个合同有多个行程 -> 行程有多个航班。 我有一个场景,我必须选择合同中的所有航班号。

喜欢: 类似的东西

var allFlightNumber=from Cont in dtCntList[0] 选择 dtCntList[0].trips.dtFlight

或必须选择出境旅行

Var outBoundTrip = from cont in dtCntList[0] 其中 cont.trip == 出境

但我无法在 DTContract 对象 (dtCntList[0]) 上执行 LINQ

请帮忙..

【问题讨论】:

  • 你能详细说明一下吗?不是很清楚你想要什么。
  • @Devendra:我有一个类类型的列表,如合同,每个合同多次旅行,旅行有多个航班号。现在我必须对对象进行查询并获取航班号..但我无法查询(LINQ)对象..
  • 而不是按照人们的要求逐步填写细节,而是向我们展示数据对象的外观(编辑掉不相关的位)以及您尝试使用的 LINQ 查询。然后人们可以准确地告诉你你做错了什么。
  • DTContract dtCntList = listofContracts_[0];//DTContract 类型的数组列表 现在我想要总和,例如: var lifgtNumber = from Cnt in dtCntList select Cnt.trips.lostOfFlifht.FlightNumber;
  • 编辑问题以添加您拥有的代码。作为评论,它不是很可读。另外,不要忘记添加预期的输出。

标签: .net linq linq-to-objects


【解决方案1】:

我假设你有以下类层次结构,

class Contract
{
    public List<Trip> TripsList { get; set; }

    public Contract()
    {
        TripsList = new List<Trip>();
    }
}

class Trip
{
    public List<string> FlightNumbers { get; set; }

    public Trip()
    {
        FlightNumbers = new List<string>();
    }
}

首先是builder方法(用来构造对象),

private Contract Build()
{
    Contract contract = new Contract();

    Trip trip = new Trip();
    trip.FlightNumbers.Add("101A");
    trip.FlightNumbers.Add("101B");
    trip.FlightNumbers.Add("101C");
    contract.TripsList.Add(trip);

    trip = new Trip();
    trip.FlightNumbers.Add("102A");
    trip.FlightNumbers.Add("102B");
    trip.FlightNumbers.Add("102C");
    contract.TripsList.Add(trip);

    return contract;
}

LINQ查找航班号是否存在,

Contract c = Build();

if (c.TripsList.Where(trip => trip.FlightNumbers.Contains("103B")).Any())
{
    Console.WriteLine("Flight number 103B exists");
}

【讨论】:

    【解决方案2】:

    很难猜出你的实际意思。 这是两种可能的解释:

    var result1 = from item in yourList
                  where item.YourProperty=="SomeValue"
                  select item;
    var result2 = from property in yourObject.GetType().GetProperties()
                  where property.Name =="SomeValue"
                  select property;
    

    【讨论】:

    • 我有一个类类型的列表,如合同,每个合同多次旅行和旅行有多个航班号。现在我必须对对象进行查询并获取航班号..但我无法查询(LINQ)对象..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多