IEnumerable<string>
があります。同じ文字で始まるすべてのエントリを収集したいと思います。たとえば
:IEnumerable <string>のすべてのエントリが同じ文字で始まるLINQ
Hans
Hannes
Gustav
Klaus
Herbert
Hanne
は今、私は最初の2
文字がHans, Hannes, Hanne
を返すことになると同じであるすべてのエントリを検索します。
IEnumerable<string>
があります。同じ文字で始まるすべてのエントリを収集したいと思います。たとえば
:IEnumerable <string>のすべてのエントリが同じ文字で始まるLINQ
Hans
Hannes
Gustav
Klaus
Herbert
Hanne
は今、私は最初の2
文字がHans, Hannes, Hanne
を返すことになると同じであるすべてのエントリを検索します。
あなただけn
を比較したい文字の数である.GroupBy
list.GroupBy(x=>x.Substring(0, n)).OrderByDescending(x=>x.Count()).First()
を使用する必要があります。完全な例
list.GroupBy(x=>x.Substring(n))
.Where(x=>x.Count() > 1)
.OrderByDescending(x=>x.Count())
.First()
:...ここで(X => x.Contains:[LINQの
var lst = new string[]
{
"Hans",
"Hannes",
"Gustav",
"Klaus",
"Herbert",
"Hanne"
};
var source = lst.GroupBy(x => x.Substring(0, 2)).OrderByDescending(x => x.Count()).First()
Console.WriteLine(source.Key);
Console.WriteLine(string.Join(",", source));
私はポイントがいくつかのサンプルを与えることを知っているが、それはいくつかの悪い 'どこにここの例(私を打つことはありません)です。 'OrderByDescending'といくつかの' FirstOrDefault(x => x.Count()> 1) 'は同じことを行い、より明確になります – Sehnsucht
私のサンプルデータであなたのソリューションを試してみると、空の' IEnumerable
固定部分文字列、最初に使用され、完全な例が追加されました – Cine
可能な重複
はまた、あなたが持つかもしれない要件をフィルタリングする
Where
を追加できます( "foo"で始まる文字列))]](@stackoverflow.com/questions/3916093/linq-wherex-x-containsstring-that-start-with-foo) – Steveこれらの2文字がわかっている場合は、@ Steveコメントは、そうでなければ、あなたは 'GroupBy' /' ToLookup'を考慮する必要があります。ここで、キーは2の部分文字列です – Sehnsucht
申し訳ありません私の質問があまりにも不明な場合、私はそれが知られていないので、リンクされた質問の重複だとは思わない。私は、どのくらいの文字(この場合は2つ)を検索したいのか分かります。 –