[英]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.