如何使linq中的方法不区分大小写对sql

时间:2019-04-11 09:06:56

标签: c# entity-framework linq

我想在linq to sql中使用类似类型运算符,我使用了contains方法来实现它,但是它区分大小写,请教我一些建议。

contains方法区分大小写,但我希望查询不区分大小写。我也尝试使用IndexOf()方法,但是它给出了异常。

public static List<string> GetDecodedStaticMsg(string filterMsg)
 {
     try
     {
         var q1 = (from decodemsg in Em.StaticMessages
                   where decodemsg.Message.Contains(filterMsg)
                   select
                   decodemsg.MessageId
                   ).ToList();

                  return q1;

     }
     catch (Exception)
     {
                return null;
     }
 }

2 个答案:

答案 0 :(得分:1)

您可以使用CompareInfo class中的CultureInfo成员,试试看:

public static List<string> GetDecodedStaticMsg(string filterMsg)
{
     try
     {
         var q1 = (from decodemsg in Em.StaticMessages
                   where culture.CompareInfo.IndexOf(decodemsg.Message, filterMsg, CompareOptions.IgnoreCase) >= 0
                   select
                   decodemsg.MessageId
                   ).ToList();

                  return q1;

     }
     catch (Exception)
     {
                return null;
     }
}

参考:https://stackoverflow.com/a/15464440/3759822

答案 1 :(得分:0)

我们可以使用SqlMethods.Like进行不区分大小写的搜索

public static List<string> GetDecodedStaticMsg(string filterMsg)
 {
     try
     {
         var q1 = (from decodemsg in Em.StaticMessages
                   where SqlMethods.Like(decodemsg.Message, $"%{filterMsg}%")  //Changes here
                   select
                   decodemsg.MessageId
                   ).ToList();

                  return q1;

     }
     catch (Exception)
     {
                return null;
     }
 }