Linq UNION查询选择两个元素

时间:2013-02-22 10:48:35

标签: c# visual-studio-2010 linq

我想使用LINQ查询从我的数据库表中选择2个元素,我看到一个使用UNION的示例我没有太多经验,但我认为这可能是我需要的但是我得到一个我无法解决的错误,我不确定它是否可修复。所以这是我的疑问:

    IList<String> materialTypes = ((from tom in context.MaterialTypes
                                   where tom.IsActive == true
                                   select tom.Name)
                                   .Union(from tom in context.MaterialTypes
                                   where tom.IsActive == true
                                   select (tom.ID))).ToList();

似乎抱怨尝试在UNION IQueryable IEnumarebale上使用ToString()。我尝试通过添加(tom.ID).ToString这样的问题来解决这个问题 - Visual-Studio-2010导致清除{"LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression."} 中的错误下划线但在运行时我得到:

{{1}}
Ty,Leron。

1 个答案:

答案 0 :(得分:36)

编辑:

好的,我发现为什么LINQtoEF中的int.ToString()失败了,请阅读这篇文章: Problem with converting int to string in Linq to entities

这对我有用:

        List<string> materialTypes = (from u in result.Users
                                      select u.LastName)
                       .Union(from u in result.Users
                               select SqlFunctions.StringConvert((double) u.UserId)).ToList();

关于你的,它应该是这样的:

    IList<String> materialTypes = ((from tom in context.MaterialTypes
                                       where tom.IsActive == true
                                       select tom.Name)
                                       .Union(from tom in context.MaterialTypes
                                       where tom.IsActive == true
                                       select SqlFunctions.StringConvert((double)tom.ID))).ToList();

谢谢,我今天学到了一些东西:)