Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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# 合并2个LINQ列表时出错_C#_Linq_Linq To Sql - Fatal编程技术网

C# 合并2个LINQ列表时出错

C# 合并2个LINQ列表时出错,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我在合并2个LINQ列表后遇到问题。我得到以下错误:查询包含对在不同数据上下文中定义的项的引用 这就是我构建最终2个LINQ列表的方式: CAPDBDataContext CAdb = new CAPDBDataContext(); USPDBDataContext USdb = new USPDBDataContext(); var ExceptionList = Special_texts.Where(x => x.name.Equals("ExceptionList"))

我在合并2个LINQ列表后遇到问题。我得到以下错误:查询包含对在不同数据上下文中定义的项的引用

这就是我构建最终2个LINQ列表的方式:

CAPDBDataContext CAdb = new CAPDBDataContext();
USPDBDataContext USdb = new USPDBDataContext();

var ExceptionList = Special_texts.Where(x => x.name.Equals("ExceptionList"))
                    .Select(x => x.special_text1)
                    .AsEnumerable()
                    .Select(x => x.Split(new[] { '#' }, StringSplitOptions.RemoveEmptyEntries))
                    .SelectMany(x => x)
                    .ToList();

var USquery = from uscomp in USdb.UScompanies
              join ussect in USdb.USsectors
              on uscomp.sector_code equals ussect.sector_code
              select new
              {
                  uscomp.company_name,
                  uscomp.primary_exchange,
                  ussect.description
              };

var CAtemp = from x in CAdb.companies
             where !ShefalisList.Contains(x.ticker)
             select x;

var CAquery = from temp in CAtemp
             join casect in CAdb.sectors
             on temp.sector_code equals casect.sector_code
             select new
             {                          
                 temp.company_name,
                 temp.primary_exchange,                             
                 casect.description
             };

 var mergedList = USquery.Union(CAquery).ToList();
我做错了什么?

请改为:

var mergedList = USquery.AsEnumerable().Union(CAquery).ToList()

如果不将查询结果存储到内存中,您就不能对不同的数据库进行联合查询。

+1:我建议使用
AsEnumerable()
而不是
ToList()
(对于第一部分-无需在此构建列表),这也将使第二部分
AsEnumerable()
call unneeded…@ReedCopsey您是指代码“var ExceptionList=”吗?(第1节)。那么,您是否建议合并列表应类似于“var mergedlist=USquery.Union(CAquery.ToList()”?我创建了一个CSVExtension类,但似乎无法从合并中获取列表枚举。我像“public static class CSVExtensions{public static void WriteToCSVFile(this IEnumerable mergedList)”一样创建了它。对不对?@inquisitive_one“我似乎无法从合并中获取列表枚举。”–这个问题描述太模糊了。它听起来像是一个新问题,你应该根据代码的当前状态提出一个新的适当的问题。