如何使用LINQ使用联合查询从多个表中进行选择,以仅返回一列?

时间:2019-01-13 14:58:34

标签: linq model-view-controller union

我有两个桌子。我想执行一个联合查询,使LINQ从两个表中选择,但只返回一列。

表1:

ID, Name1, Email

表2:

ID, Name2, Email

从表中选择Name1和Name2以返回一列。

所以,我想选择

Name
--------
Helen 
Mike 
Joe 

不是:

Name1
-------
Helen
Mike 

Name2
-------
Joe

1 个答案:

答案 0 :(得分:0)

如果只需要选择名称,

var result = table1.Select(x=>x.Name1).Union(table2.Select(x=>x.Name2));

例如,使用集合模拟场景。

var table1 = new List<Table1>
{
    new Table1{ID=1,Name1="Helen ",Email=""},
    new Table1{ID=2,Name1="Mike",Email=""},
};

var table2 = new List<Table2>
{
    new Table2{ID=1,Name2="Joe",Email=""},
};

哪里

public class Table1
{
public int ID {get;set;}
public string Name1{get;set;}
public string Email{get;set;}
}

public class Table2
{
public int ID {get;set;}
public string Name2{get;set;}
public string Email{get;set;}
}

查询将返回

Helen  
Mike 
Joe 

请注意,Union将消除重复项。如果您想包括重复项,Concat将是您的理想之选。如果您有兴趣阅读有关区别的更多信息,this thread将是一个不错的参考