C# 合并2个LINQ列表时出错
我在合并2个LINQ列表后遇到问题。我得到以下错误:查询包含对在不同数据上下文中定义的项的引用 这就是我构建最终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"))
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“我似乎无法从合并中获取列表枚举。”–这个问题描述太模糊了。它听起来像是一个新问题,你应该根据代码的当前状态提出一个新的适当的问题。