我有一個列表,其中每個元素是整數列表。我想開發LINQ來計算每個列表中==爲0的整數數目。每個外部列表中選定項目的數量
所以定義我的列表
var prisoners = new List<List<int>>(n);
for (int c = 0; c < n; c++)
{
int[] l = new int[n];
prisoners.Add(new List<int>());
prisoners[c] = l.ToList<int>();
}
所以我做了一個包含整數n的n個列出一個清單,所有零 - 我所感興趣的是零的每個列表的數量,特別最小的那個數字,直到我在名單上工作,一開始就是n。
我想出了
var q = (from arr in prisoners from int tally in arr
where tally == 0
group arr by arr into grp select grp.Count()).Min();
現在的問題似乎是,當列表中有沒有零的話,那留下的查詢,我沒有得到答案爲零。起初,我確實得到了答案'n'(當它們都是零)時 - 一旦列表中沒有零點,我就不會得到最小零點數的答案爲零。
我如何找到列表中包含的任何列表中的最小零個數? (最終將爲零)。我需要讓所有的列表進入分組,然後我計算有多少零 - 但我不知道該怎麼做。
例
int n = 3;
var prisoners = new List<List<int>>(n);
for (int c = 0; c < n; c++)
{
int[] l = new int[n];
prisoners.Add(new List<int>());
prisoners[c] = l.ToList<int>();
}
//return 3 below - that is correct at this point
var q = (from arr in prisoners from int tally in arr where tally == 0 group arr by arr into grp select grp.Count()).Min();
prisoners[1] = (new int[] { 1, 1, 1 }).ToList();
prisoners[2] = (new int[] { 1, 1, 0 }).ToList();
//so now one of the arrays has zero zeroes in it, but I get the answer 1 - zero was wanted, that is to say
//element 1 has a zero count of zero
q = (from arr in prisoners from int tally in arr where tally == 0 group arr by arr into grp select grp.Count()).Min();
你可以顯示一些示例輸入和預期輸出嗎? – Jamiec
您的查詢按預期工作 - 它會退出,因爲您首先在「== 0」上對其進行過濾,然後進行計數。 – Jaya
@JS_GodBlessAll - 我不是說查詢返回錯誤的結果,但它不是我想要的 - 我想計算每個數組中零的數量,然後返回最低的那些計數(可能爲零) – Cato