LINQ计算列表中的唯一字符串并将值存储在元组中

ccs*_*csv 0 c# linq tuples

我有一个 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)

Bug*_*der 6

所以像(原谅我的命名约定它是一个黑客)

    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)