C# 不支持两个大型LINQ查询上的联合。我如何避开它(如果可能的话)

C# 不支持两个大型LINQ查询上的联合。我如何避开它(如果可能的话),c#,linq-to-sql,C#,Linq To Sql,这是我正在写的一个非常可怕的问题 数据库的快速描述:您有一个图像表,一个imagetag表,它将它连接到一个标记表。图像可以有0个或多个标记 我有一个查询,它对图像的title属性进行全文搜索,效果很好 但是,我希望这样,当您进行全文搜索时,它还会查看图像的标记名,以查看是否有匹配项。例如,你可以有一个标题为“很棒的蛋糕”的图片,上面有烹饪的标签。当用户对烹饪进行全文搜索时,应该会找到该图像,因为它有相应的标签 对吧? 正如我提到的,我有我的全文方法,它可以工作并返回一个可查询的图像列表 我还提

这是我正在写的一个非常可怕的问题

数据库的快速描述:您有一个图像表,一个imagetag表,它将它连接到一个标记表。图像可以有0个或多个标记

我有一个查询,它对图像的title属性进行全文搜索,效果很好

但是,我希望这样,当您进行全文搜索时,它还会查看图像的标记名,以查看是否有匹配项。例如,你可以有一个标题为“很棒的蛋糕”的图片,上面有烹饪的标签。当用户对烹饪进行全文搜索时,应该会找到该图像,因为它有相应的标签

对吧?

正如我提到的,我有我的全文方法,它可以工作并返回一个可查询的图像列表

我还提出了一种方法,可以在全文查询中查找带有匹配标记的图像

IQueryable<Image> results = imageService.FullTextSearch(MakeSearchTerm(freeText));
IQueryable<Image> tagResults = imageService.FullTextTagSearch(freeText, tagService);
Union或Concat中的类型不能用层次结构构造


我明白这可能是不可能的:p但我只是想看看是否有好的想法和解决方案,干杯。

我认为你的搜索方式有问题。您不应该返回图像,而应该引入一种仅捕获图像元数据的类型,并带有图像的键


我不明白“Union或Concat中的类型不能用层次结构构造”应该是什么意思。这是个例外吗?

我会尝试将FullTextSearch和FullTextTagSearch函数组合成如下内容:

public IQueryable<Image> ImageSearch(string fullText)
{
    return from image in ImageTable
           where image.title.Contains(fullText) 
               || image.tagName.Contains(fullText)
           select image;
}
publicIQueryable图像搜索(字符串全文)
{
从ImageTable中的图像返回
其中image.title.Contains(全文)
||image.tagName.Contains(全文)
选择图像;
}

这不会解决您的问题(我不知道问题可能是什么),但最好使用Union而不是Concat+Distinct。我在MSDN上发表了一篇文章,其中进一步介绍了发生此类异常的示例。
public IQueryable<Image> ImageSearch(string fullText)
{
    return from image in ImageTable
           where image.title.Contains(fullText) 
               || image.tagName.Contains(fullText)
           select image;
}