1

まず、特定の拡張子を持つリスト内のファイルの数を返すヘルパー メソッドがあります。特定のリスト内のオーディオ ファイル全体の数を取得したいのですが、使用されているオーディオ拡張子のリストがあります。

public List<string> accepted_extensions = {"mp3", "wav", "m4a", "wma", "flac"};

ヘルパー メソッド:

private int getFileTypeCount(string[] files, string ext)
    {
        int count = 0;
        foreach (string file in files) if (Path.GetExtension(file).Contains(ext))
            {
                count++;
            }
        return count;
    }

そのため、LINQ を使用して ForEach を記述し、各メソッドの結果をリストと指定された拡張子で整数に追加できるかどうかを確認したかったのです。私はLINQがあまり得意ではないので、次から始めました。

int audio_file_count = accepted_extensions.ForEach(i => getFileTypeCount(new_file_list.ToArray(),i));

しかし、ヘルパー メソッドによって返された数値を合計に追加する方法がわかりません。これは通常の foreach ループで簡単に実行できることはわかっていますが、LINQ でそれが可能かどうかに興味がありました。

4

5 に答える 5

3

.Count()拡張メソッドを使用して、結果セットに対して集計を実行できます。

private int GetFileTypeCount(string[] files, string ext)
{
    return files.Count(file => Path.GetExtension(file).Contains(ext));
}
于 2013-01-13T17:26:57.860 に答える
2

メソッドを使用できますSum。この方法でクエリを変更します。

int audio_file_count = accepted_extensions.
    Sum(extension => getFileTypeCount(new_file_list.ToArray(), extension));
于 2013-01-13T17:27:56.657 に答える
0
var count = files
         .Count(f => accepted_extensions.Any(x => Path.GetExtension(f).EndsWith(x)));
于 2013-01-13T17:33:08.783 に答える
0
    static void Main(string[] args)
    {
        List<string> accepted_extensions = new List<string> {".mp3", ".wav", ".m4a", ".wma", ".flac"};

        string[] files = new string[] {};

        int count = files.Count(file => accepted_extensions.Contains(Path.GetExtension(file)));
    }
于 2013-01-13T17:31:15.137 に答える
0

これを試すことができます:

Int32 count = files.Count(file => Path.GetExtension(file).Contains(ext));
于 2013-01-13T17:29:22.393 に答える