lambda内连接并选择全部

时间:2013-06-01 09:25:12

标签: c# asp.net linq lambda selectall

以下是我在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:)

2 个答案:

答案 0 :(得分: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
        }
}

答案 1 :(得分:0)

只是为了扩大Oded的评论。您可以通过执行以下操作在select语句中创建新的Anonymous类型:

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

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

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

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