2

这是我inner join在 lambda 中的方式,

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

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

例子

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

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

4

2 回答 2

3

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

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
        }
}
于 2013-06-01T09:33:56.503 回答
0

只是为了稍微扩展一下 Oded 的评论。您可以通过执行以下操作在 select 语句中创建新的匿名类型:

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

您还可以通过执行以下操作指定匿名类型中项目的名称:

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

但是,如果您需要在方法范围之外使用它,则需要使用 aquaraga 建议的新类。

于 2013-06-01T10:55:57.643 回答