Отфильтруйте свойство объекта с помощью LINQ - PullRequest
0 голосов
/ 14 марта 2011

У меня есть сценарий, в котором мне нужно отфильтровать свойство объекта с помощью LINQ.

Отредактировано: у меня есть список контрактов dtCntList = DTIsland.GenericHelper.ConvertArrayListToGenericList (getList (), true);

Сейчас в договоре у меня есть различное имущество.У каждого контракта есть несколько рейсов -> у рейсов есть несколько рейсов.У меня есть сценарий, где я должен выбрать все номера рейса в контракте.

Например: что-то вроде этого

var allFlightNumber = from Cont в dtCntList [0] выберите dtCntList [0] .trips.dtFlight

илинеобходимо выбрать исходящее отключение

Var outBoundTrip = из продолжение в dtCntList [0], где cont.trip == OutBound

Но я не могу выполнить LINQна объекте DTContract (dtCntList [0])

Пожалуйста, помогите ..

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Я предполагаю, что у вас есть следующий класс heirarchy,

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");
}
0 голосов
/ 14 марта 2011

Трудно догадаться, что ты на самом деле имел в виду.Это две возможные интерпретации:

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;
...