LINQ to XML搜索,无论是低级还是大写字符串

时间:2018-02-10 23:59:16

标签: c# xml linq

我的示例根据输入到文本框中的内容返回XML文件中的数据。问题是如果XML文件包含Jon并且我键入Jon,则会显示XML文件的结果。但是,如果我用小写j键入jon,则不返回任何数据。我怎么能解决这个问题?我在下面提供了我的代码片段:

 var query = 
    from r in document.Descendants("Employee")
    where ((string)r.Element("FirstName").Value).Contains(txtSearch.Text)
    select new
    {
        FirstName = r.Element("FirstName").Value,
        Age = r.Element("Age").Value
    };

1 个答案:

答案 0 :(得分:0)

一种方法是使用ToLower()

var query = 
from r in document.Descendants("Employee")
where ((string)r.Element("FirstName").Value) 
     .ToLower()
     .Contains(txtSearch.Text)
     .ToLower()
select new
{
    FirstName = r.Element("FirstName").Value,
    Age = r.Element("Age").Value
};

另一种更有趣的方法是推广自己的扩展方法

public static bool ContainsIgnoreCase(this string str, string value) 
            => str?.IndexOf(value, StringComparison.OrdinalIgnoreCase) >= 0;

public static bool ContainsEx(this string str, string value, StringComparison comparison = StringComparison.OrdinalIgnoreCase) 
            => str?.IndexOf(value, comparison) >= 0;