.选择Vs.包括Vs.选择多个
本文关键字:选择 Vs 包括 | 更新日期: 2023-09-27 18:21:33
我发现了以下关于.Select&之间差异的示例。SelectMany
public class PhoneNumber
{
public string Number { get; set; }
}
public class Person
{
public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
}
IEnumerable<Person> people = new List<Person>();
// Select gets a list of lists of phone numbers
IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);
// SelectMany flattens it to just a list of phone numbers.
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);
但我实际上无法理解和解释两者之间的区别(Select会得到一个电话号码列表,而SelectMany会将其扁平化为一个电话号列表。)。
Seond问题,写作之间的区别是什么:-
people.Select(p => p.PhoneNumbers);
&
people.Include(p => p.PhoneNumbers);
Select可获取电话号码列表,而SelectMany可将其展平为仅包含电话号码的列表。
这正是区别。SelectMany
获取集合的集合,并将所有项作为一个集合返回。
people.Select(p => p.PhoneNumbers);
仅选择电话号码。
people.Include(p => p.PhoneNumbers);
选择已加载电话号码的人员实体。
您已经回答了第一个问题。=)
:people.Include(x=>x.PhoneNumbers)
将加载人民的电话号码。如果你不这样做,人民。PhoneNumber将为null且未加载。
因此,由于PhoneNumbers为null且未加载,因此不会执行此语句:
var phonenumbers = db.peoples.First().PhoneNumbers;
//phonenumbers = null
但如果你喜欢这样:
var phonenumbers = db.peoples.Include(x=>x.PhoneNumbers).First().PhoneNumbers;
//phonenumbers will now be a IEnumerable with Phonenumbers