Mcbaloo Ответов: 2

Как выбрать элемент из списка с помощью linq


У меня есть два объекта с именами Transactions и CreditorDetails . Я хочу быть в состоянии получить извлечения сказать CFirstName от моей сделки объект. Я не хочу извлекать его из CreditorDetails. например, я хочу иметь возможность сказать:

foreach ( Transactions item in info.transaction)
                    {
      Console.WriteLine("My Name" + item.creditors.Select(m =>m.CFirstName));
                    }




Приведенный выше код не дает мне желаемого результата. это возвращающаяся система.linq.Перечисляемый+whereSelectListIterator........... и я думаю, что знаю, почему, но мне нужно иметь возможность получить CFirstName из объекта транзакции.

Что я уже пробовал:

<pre> class Transactions
    {
        public List<CreditorsDetails> creditors { get; set; }
}


<pre> class CreditorsDetails {
        public string CFirstName { get; set; }
        public string CAddress { get; set; }
        public string CCountry { get; set; }
    }

2 Ответов

Рейтинг:
2

OriginalGriff

Попробуй:

item.creditors.Select(m =>m.CFirstName).FirstOrDefault()


Mcbaloo

пункт.кредиторы содержит два пункта . Я заметил, что после применения FirstorDefault распечатывается только первый элемент(дважды). Я хочу, чтобы эти два предмета исчезли.

F-ES Sitecore

Тогда вам понадобится петля

foreach ( элемент транзакций в info.transaction)
{
foreach (var fn в п. кредиторы.Выберите(m =>m.CFirstName))
{
....
}
}

OriginalGriff

Если вам нужно вернуть более одного элемента, то вы должны иметь коллекцию в качестве ответа - что именно и делал ваш исходный код. Он печатает "system.linq.Enumerable+whereSelectListIterator", потому что это имя класса, потому что он не может разрешить содержимое в один элемент, который ожидает WriteLine.
Чтобы напечатать более одного элемента, необходимо выполнить итерацию по коллекции, возвращаемой запросом Linq внутри существующего цикла.

Рейтинг:
0

phil.o

Видимо Transactions экземпляр может иметь несколько CreditorsDetails.
Так item.creditors.Select(m => m.CFirstName) даст перечисление имен кредиторов.
Вы можете попробовать item.creditors.Select(m => m.CFirstName).FirstOrDefault()- но я подозреваю , что в вашем замысле есть изъян.