Linq查询包含具有区分大小写搜索的条件的方法

时间:2014-11-26 12:37:22

标签: c# linq

我正在尝试在单词中获取包含单个单词的数据。如下面的查询。

List<Models.tbluser> memberslist = new List<Models.tbluser>();
var obct = (from memlist in objcontext.tblusers
           where memlist.logname.Contains(member)
          select new
          {
              userid = memlist.userid,
              logname = memlist.logname,

              decription = memlist.description
           }).ToList();

foreach (var item in obct)
{
    memberslist.Add(new tbluser
        {
            userid = item.userid,
            logname = item.logname,

            description = item.decription
         });
}

return Json(memberslist);

但是我的问题是我需要搜索区分大小写。

例如

如果我使用'a'搜索,我需要获取管理员,管理员,用户数据等数据。

但我没有得到所有这些,因为我正在使用Contains()方法进行搜索。请让我知道如何获得所有值,或者搜索值也区分大小写。

2 个答案:

答案 0 :(得分:3)

将您的位置条件更改为:

memlist.logname.ToUpper().Contains(member.ToUpper())

作为旁注,您可以稍微缩短查询(您不需要创建中间列表):

var memberslist =  objcontext.tblusers
    .Where(x => x.logname.ToUpper().Contains(member.ToUpper())
    .AsEnumerable()
    .Select(x => new tbluser
        {
           userid = x.userid,
           logname = x.logname,
           decription = x.description
        })
    .ToList();

return Json(memberslist);

答案 1 :(得分:1)

使用ToLower()ToUpper()检查条件时,您可以将其更改为降低高级大小写:

var obct = (from memlist in objcontext.tblusers
            where memlist.logname.ToLower().Contains(member.ToLower())
            select new
                 {
                   userid = memlist.userid,
                   logname = memlist.logname,
                   decription = memlist.description

                 }).ToList();