Получить имя свойства типа T в случае IEnumerable <T> - PullRequest
2 голосов
/ 06 февраля 2012

У меня есть класс Person:

public class Person {

public long Id { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string PhoneNo { get; set; }
public string FaxNo { get; set; }
public int Age { get; set; }
public DateTime BirthDate { get; set; }

}

И экземпляр People, подобный этому:

IEnumerable<Person> people = new List<Person>() { /* Define people */ }

Поэтому мне нужно получить имена свойств людей, использующих людей, конечно, я могуиспользуйте это:

string fr = people.FirstOrDefault().FirstName;

А как насчет ситуации, когда у people нет экземпляра Person?Я знаю, когда у нас нет Person, поэтому у нас нет FirstName, но мне нужно получить к нему доступ в виде списка ASP.NET MVC, который я хочу Использовать следующим образом:

  @Html.DisplayFor(model => model.LastName)

Любойесть идеи по этому поводу?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2012

Если people пусто, то FirstOrDefault() вернет ноль, поэтому вы получите исключение нулевой ссылки.

Не ясно, что вы хотите, чтобы произошло здесь,но если вы просто хотите null, вы можете использовать:

string fr = people.Select(p => p.FirstName).FirstOrDefault();

Это выполнит проекцию first - поэтому FirstOrDefault() просто вернет null, если нет людей,или имя первого лица в противном случае.

0 голосов
/ 06 февраля 2012

Это не полный ответ, но я надеюсь, что вы можете помочь, вы можете определить пустой Person экземпляр и использовать его следующим образом:

@model IEnumerable<YourNameSpace.Models.Person>
@{
ViewBag.Title = "Index";
YourNameSpace.Models.Person p = new YourNameSpace.Models.Person();
}

И:

@Html.LabelFor(x => p.FirstName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...