来自字符串变量linq查询的列名

时间:2015-06-02 15:36:37

标签: c# linq

您好我需要在查询中选择一个名称存储在字符串变量中的列,如:

string day = "Monday";

result = from w in DataContext.Table
         where w.day == true
         select w.SGL;          

如果我这样做,我会收到一个语法错误,上面写着'没有定义日期或方法'

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您好我可以通过这样做解决它:

首先我安装了NuGet包System.Linq.Dynamic检查此链接

https://www.nuget.org/packages/System.Linq.Dynamic/

接下来添加命名空间:

using System.Linq.Dynamic;

然后查询:

string day = "Monday";

var resultado = DataContext.Table
                   .Where(day + " == true")
                   .Select("SGL");

感谢您的帮助

答案 1 :(得分:0)

不确定您要查找的内容,但如果您尝试选择列包含字符串的记录,则需要使用此字符:

string day = "Monday";

result = from w in DataContext.Table
     where w.YourColumnName.Contains(day)
     select w.SGL;      

其中YourColumnName是您要过滤的列的名称

答案 2 :(得分:0)

抱歉,动态地址列名称是不可能的。您的最佳解决方案是使用

string day = "Monday";

result = from w in DataContext.Table
 where w.YourColumnName.Contains(day)
 select w.SGL;      
switch (day){
   case "Monday":
      result = from w in DataContext.Table
 where w.Monday == true
 select w.SGL; 
 break;
 //an so on
}

或使用策略模式来替换switch,但动态设置列名 - 不可能。您可以尝试使用Dynamic Linq库downloaded from here,然后您的查询将显示为

var query = DataContext.Table
                         .Where("Monday = 0")

但重演不会是最好的。