将匿名类型的 属性 加入元素列表
Join a property of an anonymous type with a list of elements
我有一个IQueryable<Anonymous>
Anonymous
{
field = BatchNumber,
list = list of Employees
}
Employees
{
PersonId,
HireDate ....
}
我有一个 IQueryable of Person
Person
{
PersonId,
Name
}
我想使用 linq 的 Join 方法,而不是查询表达式,结果应该是一个 IQueryable with
批号和名称
(所有员工批号及姓名)
如果您有这样的模型:
class Anonymous
{
public string Field { get; set; }
public List<Employee> Employees { get; set; }
}
class Employee
{
public int PersonId { get; set; }
...
}
class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
}
像这样的对象:
IQueryable<Anonymous> anonymous = ...;
IQueryable<Person> persons = ...;
对于每个 Anonymous
,您可以使用 BatchNumber
和 Name
连接 Employees
属性 和 persons
对象生成新对象 PersonId
属性:
var result = anonymous.SelectMany(a =>
a.Employees.Join(persons,
e => e.PersonId,
p => p.PersonId,
(e, p) => new
{
BatchNumber = a.Field,
Name = p.Name
}));
这会生成包含两个属性的对象集合:BatchNumber
和 Name
我有一个IQueryable<Anonymous>
Anonymous
{
field = BatchNumber,
list = list of Employees
}
Employees
{
PersonId,
HireDate ....
}
我有一个 IQueryable of Person
Person
{
PersonId,
Name
}
我想使用 linq 的 Join 方法,而不是查询表达式,结果应该是一个 IQueryable with
批号和名称
(所有员工批号及姓名)
如果您有这样的模型:
class Anonymous
{
public string Field { get; set; }
public List<Employee> Employees { get; set; }
}
class Employee
{
public int PersonId { get; set; }
...
}
class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
}
像这样的对象:
IQueryable<Anonymous> anonymous = ...;
IQueryable<Person> persons = ...;
对于每个 Anonymous
,您可以使用 BatchNumber
和 Name
连接 Employees
属性 和 persons
对象生成新对象 PersonId
属性:
var result = anonymous.SelectMany(a =>
a.Employees.Join(persons,
e => e.PersonId,
p => p.PersonId,
(e, p) => new
{
BatchNumber = a.Field,
Name = p.Name
}));
这会生成包含两个属性的对象集合:BatchNumber
和 Name