文字列 "a:b;c:d,e;f:g,h,i" が与えられた場合、文字列を 2 つの列のフラットなリストに分割し、それぞれがキー (コロンの左側) に対応するようにします) と値 (コロンの右側にカンマ区切り)。結果は次のようになります。
{
Key: "a",
Value: "b"
},
{
Key: "c",
Value: "d"
},
{
Key: "c",
Value: "e"
},
{
Key: "f",
Value: "g"
},
{
Key: "f",
Value: "h"
},
{
Key: "f",
Value: "i"
}
問題は、KeyValue のリストのリストではなく、KeyValue の単一のリストを返すように、すべてのキーにまたがるカンマの 2 番目の分割の結果を平坦化できないことです。
public class KeyValue {
public string Key { get; set; }
public string Value { get; set; }
}
List<KeyValue> mc = "a:b;c:d,e;f:g,h,i"
.Split(';')
.Select(a =>
{
int colon = a.IndexOf(':');
string left = a.Substring(0, colon);
string right = a.Substring(colon + 1);
List<KeyValue> result = right.Split(',').Select(x => new KeyValue { Key = left, Value = x }).ToList();
return result;
})
.ToList();
ご協力いただきありがとうございます。