2016-04-20 8 views
0

私は1つのLinq式で関数を構築しようとしています。私が持っているものsplit + substring + tolist c#Linq

  • :カンマで区切られた値を持つ文字列:

var values = "AA1234,AA2345,BB2345"

  • 私は必要なもの:この値のリストだけが最初の2つの文字( 'AA、 BB、CC ')

次に、この簡単な関数を作成しました。

var splitedList = previousString.Split(',').ToList(); 
var finalList = splitedList.Select(s=> s.Substring(0, 2)).ToList(); 

も結果は罰金です:

var finalList = new List<string>(); 
var splitedList = previousString.Split(',').ToList(); 
foreach (var s in splitedList) 
{ 
    finalList .Add(s.Substring(0,2)); 
} 
は、それから私はまた、私は主に私ができることをLINQに変換しようとしましたが、これは結果であり、結果を得ました。

しかし、これを1回の呼び出しで簡単にする方法はありますか?

私はいくつかのコマンドを試してみましたが、彼らは動作しませんでした:

var finallist = previousString.Split(',').ToString().Substring(0,2).ToList(); 
var finallist = previousString.Split(',').ToString().Take(2); 
var finallist = previousString.Split(',').ToString().Take(2).ToList(); 

はたぶん、ちょうどすべてについては

おかげことはできません。

+0

なぜ '.ToString()'を追加しましたか?あなたは動作するクエリでそれを持っていない – Default

答えて

3

それは特に理由はありません場合は、ToList()を呼び出す必要はありません。

var values = "AA1234,AA2345,BB2345"; 

var splitedList = values 
    .Split(',') 
    .Select(s => s.Substring(0, 2)) 
    .ToList(); 

ToList()Split(',')string[]を生成する一方、List<string>を作成します。どちらもIEnumerableを実装しているため、ToList()は不要です。Select()にはIEnumerableが必要です。

0

これは動作するはずです:

var finalList = previousString.Split(',').Select(s => s.Substring(0, 2)).ToList();