您可以使用在 Join() 方法中创建的匿名类型。
List<Master> list1 = new List<Master>(){
new Master(){ Id=1, Name="Name1"},
new Master(){ Id=2, Name="Name2"}};
List<Detail> list2 = new List<Detail>(){
new Detail(){ Id=1, MasterId=1, Description="Description1"},
new Detail(){ Id=2, MasterId=1, Description="Description2"},
new Detail(){ Id=3, MasterId=1, Description="Description3"},
new Detail(){ Id=4, MasterId=2, Description="Description4"},
new Detail(){ Id=5, MasterId=2, Description="Description5"}};
// IEnumerable of anonymous types
var result = list1.Join(list2, m => m.Id, d => d.MasterId, (m, d) => new { Id = m.Id, Name = m.Name, Description = d.Description });
foreach (var item in result)
Console.WriteLine(item.Id + " " + item.Name + " " + item.Description + Environment.NewLine);
// Returns
// 1 Name1 Description1
// 1 Name1 Description2
// 1 Name1 Description3
// 2 Name2 Description4
// 2 Name2 Description5