如何在C#中将Dictionary TKey和TValue一个接一个地传递给方法
本文关键字:一个 方法 TKey TValue 中将 Dictionary | 更新日期: 2023-09-27 18:24:13
我在代码中有一个Dictionary
,如下所示:
SqlCommand query = con.CreateCommand();
query.CommandText = @"select pid, p_title from sub_aminer_paper where pid IN (/*a long list of Pid's*/)";
SqlDataReader reader = query.ExecuteReader();
Dictionary<int, string> paper_title = new Dictionary<int, string>();
paper_title.Add(Convert.ToInt32(reader["pid"]), reader["p_title"].ToString() );
字符串lines
读取文本文件为:
var lines = System.IO.File.ReadLines(@"D:'~'research_fields.txt");
我想将Dictionary TKey和TValue传递给HashSet
中要调用的方法,如下所示:
var similarity = new HashSet<Tuple<string, double, int>>();
similarity.Add(lines.Select(line => Tuple.Create(line, p.calculate_CS(line, paper_title.Select(item => item.Value).ToString()), paper_title.Select(item => item.Key))));
但这行代码给出了一些无效参数的错误
方法p.calculate_CS(string, string)
采用两个类型为string
的参数。我必须从lines
取一个string
,从Dictionary
取一个字符串,即paper_title
。Tuple
的第三个自变量的类型为int
,它将是Dictionary
中的Key
。
根据评论中的讨论,我认为您的代码应该看起来像
var similarity = new HashSet<Tuple<string, double, int>>();
foreach(var key in paper_title.Keys){
similarity.Add(lines.Select(line => Tuple.Create(line,
p.calculate_CS(line, paper_title[key]), key)));
}
此代码将遍历字典中的每个键,并使用适当的属性调用calculate_CS
方法。
TKey和TValue可以通过以下方式逐一传递给方法:
Dictionary<int, string> paper_title = new Dictionary<int, string>();
paper_title.Add(Convert.ToInt32(reader["pid"]), reader["p_title"].ToString() );
var similarity = new HashSet<Tuple<string, double, int>>();
foreach(KeyValuePair<int, string> item in paper_title)
{
similarity.UnionWith(lines.Select(line => Tuple.Create(line, p.calculate_CS(line, item.Value), item.Key)));
}