我有一个 list<strings[]> doc,我想将他们的计数存储到一个Tuple<string[], int[]>(唯一的单词,每个列表条目中的n个单词的数量).到目前为止,我只获得了独特的字符串
public class Program
{
public static void Main(string[] args)
{
List<string[]> doc = new List<string[]>();
string[] a = { "That", "is", "a", "cat" };
string[] b = { "That", "bat", "flew","over","the", "cat" };
doc.Add(a);
doc.Add(b);
string[] strs = doc
.SelectMany(array => array)
.Distinct()
.ToArray();
foreach (string val in strs) {
Console.WriteLine(val);
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以输出应该是这样的
string[] a = { "That","is","a","cat","bat","flew","over"," the" };
int[] i_one = { 1,1,1,1,0,0,0,0 };
int[] i_two ={ 1,0,0,1,1,1,1,1 };
List<Tuple<string[],int[]> ret = new List<string[],int[]>();
var b = new Tuple<string[],int[]>(a, i_one);
var c = new Tuple<string[],int[]>(a, i_two);
ret.Add(b);
ret.Add(c);
Run Code Online (Sandbox Code Playgroud)
所以像(原谅我的命名约定它是一个黑客)
string[] a = { "That", "is", "a", "cat" };
string[] b = { "That", "bat", "flew", "over", "the", "cat" };
var c = a.Union(b).Distinct();
var a1 = (from ch in c select a.Count(r => r == ch));
var b1 = (from ch in c select b.Count(r => r == ch));
Run Code Online (Sandbox Code Playgroud)