如何解决将字典的键与List的值进行比较,并返回所有匹配的值,包括重复项
我有一个Dictionary
public async Task<string> OpenSession (string config,string userid,string password)
{
var client = new HttpClient();
JObject jParms = new JObject();
jParms.Add("Configuration",config);
jParms.Add("UserName",userid);
jParms.Add("Password",password ?? "");
Uri uri = new Uri(Session.URL + "/OpenSession");
var response = await client.PostAsync(uri,new StringContent(jParms.ToString())).ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
string data = await response.Content.ReadAsStringAsync();
//Success Code
} else
{
//Error Code
}
return "";
}
public async Task<string> Request(string query)
{
var client = new HttpClient();
Uri uri = new Uri(Session.URL + "/Request/" + query);
var request = new HttpRequestMessage()
{
RequestUri = uri,Method = HttpMethod.Post
};
request.Headers.Add("Authorization",Session.SessionID);
var response = await client.SendAsync(request).ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
else
{
//Error Code
}
return "";
}
它将输出返回为 里克·卡斯托尔 凯莉·汤姆森
但是我的预期输出是 里克·卡斯托尔 凯莉·汤姆森 凯莉·汤姆森
因为它们是列表中K的三个重复项。 如何获得我的输出以获取列表中存在的重复值。
解决方法
您可以尝试从另一端(列表)进行查询。
a.Where(i => key.ContainsKey(i)).Select(i => key[i])
但是,如果您可以使用foreach会更有效,因为对于每个项目,您只需要检查一次字典:
var result = new List<string>();
foreach (var i in a)
{
if (key.TryGetValue(i,out var val)
result.Add(val);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。