繁体   English   中英

使用LINQ在C#中搜索字符串

[英]Search the string in c# using LINQ

我在C#中有一个Dictionary>

    Dictionary<string,List<string>> l_dictRawData;

其中包含的值是:

                KEYS                 VALUES
   l_dictRawData["TamilNadu"] => VALUE[0] = "Chennai" VALUE[1] = "Madurai"
   l_dictRawData["Andhra"] = > VALUE[0] = "Hyderabad" VALUE[1] = "Secundarabad"
   l_dictRawData["Karnataka"] = > VALUE[0] = "mysore" VALUE[1] = "Bangalore"

然后我有InputList

  List<string> l_lstInput = new List<string>();

其中包含的数据是:

  l_lstInput[0] = "Hyderabad"
  l_lstInput[1] = "Secundarabad"

如果字典l_dictRawData同时包含“海得拉巴”和“塞昆达拉巴德”,则结果为(即),然后选择KEy值。

 string l_strOutPut = "Andhra";

这是我的代码:

                            var Query = from l_strData in l_dictRawData
                            from l_strItem in l_lstInput
                            where l_strData .Value.Contains(l_strItem )
                            select new
                            {
                                CityName = l_strItem,
                                StateName = l_strData.Key
                            };

我如何在C#中使用LINQ获取输出

如果您有任何疑问,请告诉我

好吧,具有您要查找的Dictionary并不是真正适合此目的的数据结构,但是您可以执行以下操作:

var query = from pair in l_dictRawData
            where pair.Value.SequenceEquals(l_lstInput)
            select pair.Key;

这将使所有与给定值匹配的键。 然后,您可以使用一个query.First() query.FirstOrDefault() query.Single()query.SingleOrDefault()得到一个结果,根据您的要求。

对于包含选项的工作方式类似,我们还应该考虑字符串的大小写,例如下面

searchUserName = searchUserName.ToLower();
            var results = orgUserEmailSettingsTOList.Where(c => c.UserDisplayName.ToLower().Contains("" + searchUserName + "")).ToList();

        return results;

我尚未测试过,但是您应该发现它可以正常工作,或者足以满足您的需求:

var matches = (
from kvPair in l_dictRawData
where l_lstInput.Contains(kvPair.Value)
where l_lstInput.Contains(kvPair.Key)
select new {
MatchedVal = kvPair.Value
}
).ToList();

这将从字典返回所有键值,其中字典项包含l_lstInput集合中存在的两个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM