繁体   English   中英

如何在C#中将字典TKey和TValue一对一传递给方法

[英]How to pass Dictionary TKey and TValue to a method one by one in C#

我的代码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一个字符串,即paper_title Tuple的第三个参数是int类型,它将是DictionaryKey

请帮助这方面。 谢谢!

从注释的讨论中,我认为您的代码应类似于

  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))); 
}

暂无
暂无

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

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