2016-04-17 9 views
1

私はList<string> {"", "1,5,4", "h", "5,8", "1"}です。私は3つに分割する必要がありますList<int>。これは私のコードです:リストを正しく分割する方法<string>?

var parseString = condition.Trim().Split(separator).ToList(); 
var numberSections = new List<string>(); 
var numberRow = new List<string>(); 
var numberCell = new List<string>(); 
foreach (var str in parseString) { 
    if (int.TryParse(str.Substring(0, 1), out i) && numberSections.Count == 0) { 
     numberSections.Add(str); 
     parseString.Remove(str); 
    } 
    if (int.TryParse(str.Substring(0, 1), out i) && numberRow.Count == 0) { 
     numberRow.Add(str); 
     parseString.Remove(str); 
    } 
    if (int.TryParse(str.Substring(0, 1), out i) && numberCell.Count == 0) { 
     numberCell.Add(str); 
     parseString.Remove(str); 
    } 
} 

しかし、動作しません。私はそれをどのようにすることができますか?それを反復しながら、ここで

+2

のためのLINQのバージョンであるあなたは、 'parseString'を変更することはできません。 – qxg

+0

また、これらのリストが空の場合は、各結果リストに項目を追加するだけです。なぜ3つの文字列変数の代わりに3つのリストを使用して結果を保存するのですか? – qxg

+3

あなたがしようとしていることは明確ではありません。あなたは入力と出力の複数の例を挙げることができますか? –

答えて

2

はそれ

var result = list.Select(x => x.Split(",".ToCharArray(), 
           StringSplitOptions.RemoveEmptyEntries)) // now we have List<List<string>> 
       .Select(x => x.Select(y => 
       { 
        int value; 
        var isInt = int.TryParse(y, out value); 
        return isInt ? value : (int?)null; 
       })) // convert each element of inner list to null or its int values 
        // we have a List<List<int?>> 
       .Where(x => x.Any() && x.All(y => y.HasValue)) // only select lists which contains only integers 
       .ToList(); 
関連する問題