4

次のようなリストがあります。

item.Add("a");
item.Add("as");
item.Add("b");
item.Add("fgs");
item.Add("adsd");

(たとえば) "a" で始まるすべての項目を見つけるにはどうすればよいですか?

この「a」はハードコードされた文字列ではないため、文字列ごとにこれを行う関数が必要になります。

FindAll を試してみましたが、その仕組みがわかりませんでした。

Br、ウルフィー

4

6 に答える 6

7

「最初から」とは最初の文字を意味する場合、次のようになります。

item.FindAll(i => i[0] == 'a');

文字列(1文字以外の場合もあります)を意味する場合は、次のようになります。

item.FindAll(i => i.StartsWith("a"));

大文字と小文字を区別しない、ロケールベースなど、別の比較が必要な場合は、次のような関連するIndexOfを実行します。

item.FindAll(i => i.IndexOf("a", StringComparison.CurrentCultureIgnoreCase) == 0);

上記のすべては、関連するcharまたはstring変数またはパラメーターを使用するように簡単に適合させることができます。

リストによって提供される追加のプロパティとメソッドが必要ない場合は、新しいリストを作成するWhereよりも効率的に使用でき、一度に作成すると同時に、一致する結果を繰り返して列挙します。 。FindAllFindAllWhere

于 2010-09-20T09:10:37.657 に答える
2

またはLINQを使用

from i in items where i.StartsWith("a") select i;
于 2010-09-20T09:08:00.363 に答える
1

NET2.0の場合、次のメソッドを使用できます。'pattern'は、検索する引数です(fe "a")

    private List<string> FindAll(List<string> list, string pattern)
    {       // returns found results
            return list.FindAll(delegate(string item)
                            {
                                return item.StartsWith(pattern);

                            });
    }
于 2010-09-20T09:10:26.863 に答える
1

startwith基準文字列を含む別のリストがあると思いました。あなたのアイテムを「単語」と呼び、他のリストを「キーワード」と呼びましょう。したがって、以下のクエリは必要なものを返します。

List<string> words = new List<string>();
words.Add("a");
words.Add("as");
words.Add("b");
words.Add("fgs");
words.Add("adsd");

List<string> keywords = new List<string>();
keywords.Add("a");
keywords.Add("b");

var result = words.FindAll(o =>
    keywords.Any(a => o.StartsWith(a))
);

この結果には、keywordsのいずれかのキーワードで始まる単語が含まれています。

于 2010-09-20T09:10:30.230 に答える
1
List<string> item = new List<string>();
            item.Add("a");
            item.Add("as");
            item.Add("b");
            item.Add("fgs");
            item.Add("adsd");

            var res1 = item.FindAll(i => i.StartsWith("a"));
            var res2 = item.Where(i => i.StartsWith("a"));
于 2010-09-20T12:37:58.447 に答える
0

これを試して

item.FindAll(i => i.Contains("a"));

これにより、フィルタリングされた文字列のみを含むリストが返されます。

于 2010-09-20T09:05:20.523 に答える