Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有三列的两个数据库表的Linq查询_C#_Linq - Fatal编程技术网

C# 具有三列的两个数据库表的Linq查询

C# 具有三列的两个数据库表的Linq查询,c#,linq,C#,Linq,我有个问题。我的数据库中有两个表,都具有相同的结构。我想在Linq查询中使用Union将两个表合并在一起,但不能将它们与多个列合并 这是我的代码: var result1 = from t in db.table1 select new { t.FieldOne, t.FieldTwo }; var result2 = from g in db.table2 select new { g.FieldOne, g.FieldTwo}; var com

我有个问题。我的数据库中有两个表,都具有相同的结构。我想在Linq查询中使用Union将两个表合并在一起,但不能将它们与多个列合并

这是我的代码:

var result1 = from t in db.table1 select new { t.FieldOne, t.FieldTwo };            
var result2 = from g in db.table2 select new { g.FieldOne, g.FieldTwo};            
var combinedTable= result1.Union(result2).ToList();
但是我犯了一个错误。如果我对每个表只使用一列,它就会工作


如果有人能帮我用两列或更多列来完成这项工作,那就太好了:

您的代码定义了两种匿名类型

结果1为IQueryable类型 结果2为IQueryable型 不能合并不同类型的集合

那么,解决方案是什么

定义一个简单的中间类型,就像编译器在定义匿名类型时所做的那样

class MyResultItem
{
    public string FieldOne { get; set; }
    public string FieldTwo { get; set; }
}

IQueryable<MyResultItem> result1 = from t in db.table1 select new MyResultItem {
    FieldOne = t.FieldOne,
    FieldTwo = t.FieldTwo
};            
IQueryable<MyResultItem> result2 = from g in db.table2 select new MyResultItem {
    FieldOne = g.FieldOne,
    FieldTwo = g.FieldTwo
};            
IEnumerbale<MyResultItem> combinedTable = result1.Union(result2).ToList();

正如您所看到的,我没有使用关键字var。这是因为这不是教学。关于LINQ使用的许多问题都与对打字的理解有关。匿名类型和var关键字非常方便,但如果发现编译时错误,首先要做的是用显式类型替换表达式,从而重写表达式。

字段的名称不同,或者类型不同。因此,解决方案是确保字段具有相同的名称和类型。您的问题中没有足够的信息来确定这两个类的不同之处。@Servy-第一个字段在两个表中具有相同的名称-第二个字段具有不同的名称,但确切的数据类型为varchar255-我认为这是错误的!我将尝试修复此问题,并将其张贴在这里,如果它的工作或NOTK-这是错误的。我重新命名了表中的字段,现在它可以工作了。感谢您提供此信息!在这里使用匿名类型完全没有问题。具有相同名称和相同类型的完全相同成员的匿名类型将被定义为相同的类型,而不是单独的类型,而是相同的类型,因此代码可以正常工作。OP代码的问题在于,由于不同的名称或不同的类型,由于某些原因,字段不完全相同。这就是需要解决的问题。