.net 包含方括号的动态LINQ查询的问题

.net 包含方括号的动态LINQ查询的问题,.net,sql,sql-server,linq,dynamic-linq,.net,Sql,Sql Server,Linq,Dynamic Linq,我在.NETMVC应用程序中使用动态Linq库()查询SQLServer数据库。到目前为止一切正常 但是,每当我使用方括号指定包含空格或连字符的麻烦列名时,动态Linq库就会给出一个“Expression expected”错误。以下是一些例子: var query = context.FetchIceCream().AsQueryable().Where("Chocolate = 1"); // This is fine var query = context.FetchIceCream().

我在.NETMVC应用程序中使用动态Linq库()查询SQLServer数据库。到目前为止一切正常

但是,每当我使用方括号指定包含空格或连字符的麻烦列名时,动态Linq库就会给出一个“Expression expected”错误。以下是一些例子:

var query = context.FetchIceCream().AsQueryable().Where("Chocolate = 1"); // This is fine
var query = context.FetchIceCream().AsQueryable().Where("[Rum and Raisin] = 1"); // This results in an "Expression expected" error

我不能重命名任何列名,所以这不是一个选项-我需要能够在代码中对其进行排序。我到处寻找解决这个问题的办法,但都没有用。。。请帮助我保持理智

我建议不要使用动态LINQ。只需将内容添加到
IQueryable

中,就可以一步一步地建立查询,因此我认为这就是答案:

在Where子句中使用的名称必须是可查询集合中对象的属性。

这纯粹是猜测,因此您可以假设它是错误的,但是你有没有试过在名字周围使用单引号,看看会发生什么?谢谢你的回答,但我担心它不起作用-它会导致完全不同的错误(“如果你感兴趣,字符文字必须只包含一个字符!)必须有一个更清晰的答案,所以只有一个注释。你能创建一个没有空格的视图吗?不是真的-很多列名是动态创建的,所以我们需要代码来处理可能还不知道的新列名。你在Where子句中使用的名称必须是IQueryable集合中对象的属性。所以我不明白你想在这里做什么。属性名称不能有任何空格或连字符。遗憾的是,这不是一个真正的选项-在这种情况下,我们不能真正根除项目的整个基础设施,因为时间不允许。在这种情况下,Patrick Koorevaar对这个问题的评论是正确的。您不能引用名为“朗姆酒和葡萄干”的C#属性,因为没有这样的C#属性。动态LINQ适用于您正在使用的任何LINQ提供程序,并且您必须在该过程中将该字段映射到有效的属性名称。您必须使用此属性名。请参阅上面的注释-可查询集合是由存储的proc返回的具有动态列名的记录集,而动态列名尚未作为对象存在。我能够以这种方式成功地查询所有其他动态列,但不包括包含空格或连字符的列。您使用的是哪种基本LINQ提供程序?为了成为有效的C#属性名,它们的名称可能会被它弄乱。试试
RumandRaisin
Rum\u和RumandRaisin