Lambda内部连接并选择全部

本文关键字:选择 全部 连接 内部 Lambda | 更新日期: 2023-09-27 18:16:35

以下是我在lambda中的inner join

var myObject = tableNames.Join(tableSchool,  x => x.sID , s => s.schoolID ,  
( (x,s) => new {   }  ) ).ToList();

我在tableNamestableSchool中都有许多字段。
通过lambda查询,如果我在tableNames中有10个字段,我必须在new { }中写下所有10个字段10次。
我想知道的是如何选择tableName表的所有字段和tableSchool表的一个字段。

例子
tableName     tableSchool
---------     ------------ 
Nfield1       Sfield1
Nfield2       Sfield2
Nfield3       Sfield3
Nfield4
Nfield5

我想从tableName中获取所有字段,从tableShcool中获取一个字段(Sfield1)。我想把这个数据源绑定到asp:GridView:)

Lambda内部连接并选择全部

如果您想要两个表的详细信息,那么您可以:

List<AllDetails> myObject = tableNames.Join(tableSchool, x => x.sID, s => s.schoolID, ((x, s) => new AllDetails(x, s))).ToList();

地点:

public class AllDetails
    {
        private TableName tabName;
        private TableSchool tabSchool;
        public AllDetails(TableName tableName, TableSchool tableSchool)
        {
            //Assign fields here
        }
}

稍微扩展一下Oded的评论。您可以在select语句中创建一个新的匿名类型,方法如下:

(x, s) => new { x,s }

您还可以指定匿名类型中的项的名称:

(x, s) => new { TableName=x,TableSchool=s }

如果你需要在方法的作用域之外使用这个,你需要使用一个新的类,如aquaraga所建议的。