c#从列表中选择lambda表达式

时间:2016-08-13 10:11:04

标签: c# select lambda indexer

我有一个我的实体列表,我使用Select从我的实体获取一些属性。我的实体具有PrimaryContact属性,并且具有LastName属性。所以如果我这样使用它可以正常工作

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"

请有人帮助我。

3 个答案:

答案 0 :(得分:0)

试试这个,

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

答案 1 :(得分: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
 }

答案 2 :(得分:0)

Select返回IEnumerable,如果您想要LastName中的所有items,那么:

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

否则,如果您只想要其中一个,那么在Select使用FirstOrDefault之后:

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