使用LINQ过滤对象的属性

时间:2011-03-14 09:29:42

标签: .net linq linq-to-objects

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

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

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

像: 有点像那样

  

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

或必须选择出境旅行

  

Var outBoundTrip =来自cont in   dtCntList [0]其中cont.trip ==   出站

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

请帮助..

2 个答案:

答案 0 :(得分: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>();
    }
}

首先是构建器方法(构造对象),

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");
}

答案 1 :(得分:0)

有点难以猜出你的意思。 这是两种可能的解释:

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;