2016-08-13 5 views
2

У меня есть список моих сущностей, и я использую Select, чтобы получить некоторые свойства из моего объекта. Мой объект имеет PrimaryContact собственности, и это имеет LastName собственности. Так что если я использую это как это работает прекрасноC# выбор из списка с выражением лямбда

var b = items.Select(s => s[PropertyName]); //Property name is "PrimaryContact" it's fine. 

, но если я использую "PrimaryContact.LastName" это не работает

var x = items.Select(s => s[PropertyName]); //Property name is "PrimaryContact.LastName" it's not working 

PropertyName может быть Evrything: "PrimaryContact.LastName", "PrimaryContact.FirstName", " PrimaryContact.Address.City "

Не мог бы кто-нибудь помочь мне в этом, пожалуйста.

+0

вопрос не обновлен –

+0

не является решением проблемы? – Mostafiz

+0

он будет работать только для PrimaryContact.LastName –

ответ

0

Попробуйте это,

var x = items.Select(s => s["PrimaryContact"].LastName); 
+0

К сожалению, это не скомпилируется, потому что 'Select' вернет' IEnumerable 'и ни одного - так что вы не можете использовать '.' LastName' –

+0

также ваш код имеет проблемы с формированием – Mostafiz

+0

@GiladGreen согласился – Sajeetharan

0

Если вы хотите только один товар LastName затем

var x = items.Select(s => s["PrimaryContact"]).FirstOrDefault().LastName; 

И если вы хотите, чтобы все элементы Lastname как коллекции, то

var x = items.Select(s => s["PrimaryContact"].LastName); 

, если вы хотите, чтобы все свойство сначала выбирает со всем свойством, а затем перебирает его

ar x = items.Select(s => s["PrimaryContact"]); 

foreach(var p in x) 
{ 
    // P.FirstName 
    // p.LastName 
    // p.Address.City 
} 
+0

спасибо за помощь, но я не знаю Не думаю, что это лучший способ: –

+0

Почему я не могу использовать var x = items.Select (s => s ["PrimaryContact.LastName"]); –

+0

, потому что кажется, что 'PrimaryContact.LastName' не является коллекцией имени его единственной сущности, а' PrimaryContact' является коллекцией, поэтому вы можете выбрать их с помощью linq, но почему вы это мое решение не лучший способ? – Mostafiz

0

Select возвращает IEnumerable так что если вы хотите все LastName с в items тогда:

var b = items.Select(s => s["PrimaryContact"].LastName); 

В противном случае, если вы хотите только одного из них, то после Select использования FirstOrDefault:

var b = items.Select(s => s["PrimaryContact"]).FirstOrDefault().LastName; 
+0

Я обновил свой вопрос –

Смежные вопросы