と言うことは、各項目の意味のリストを持っている場合は、strGroupの各項目に名前を付ける方法文字列グループ内のアイテムに名前を付ける方法は?
string[] strGroup=returnStr.split(',');
?だから、特定のアイテムを使う必要があるときは、strGroup[23]
の代わりにstrGroup["LastName"]
を使うだけです。
と言うことは、各項目の意味のリストを持っている場合は、strGroupの各項目に名前を付ける方法文字列グループ内のアイテムに名前を付ける方法は?
string[] strGroup=returnStr.split(',');
?だから、特定のアイテムを使う必要があるときは、strGroup[23]
の代わりにstrGroup["LastName"]
を使うだけです。
あなたは文字列の辞書を見る必要があると思います。
string[] data = returnStr.Split(',');
var map = new Dictionary<string, string>();
map["LastName"] = data[23];
map["FirstName"] = data[24]; // or whatever
ここで、文字列配列ではなくマップを使用します。
string firstName = map["FirstName"];
これは、Dictionary<TKey,TValue>
クラスのためのものです。あなたの場合はDictionary<string,string>
が必要です。ただし、アイテムを名前でアクセスするには、そのアイテムを一度初期化する必要があります。
文字列が1つだけの場合は、Dictionary<string, string>
データ型を使用します。
分割された文字列の完全なリストがある場合は、DataTableを使用して列名を使用します。このような
何か
string returnStr = "Claus,Junker,Jørgensen";
string[] keys = new string[]
{
"FirstName",
"MiddleName",
"LastName"
};
Dictionary<string, string> groups = returnStr.Split(',')
.Select((x, i) => Tuple.Create(keys[i], x))
.ToDictionary(k => k.Item1, v => v.Item2);
// Alternative version
Dictionary<string, string> groups = returnStr.Split(',')
.Zip(keys, (k, v) => new KeyValuePair<string, string>(k, v))
.ToDictionary(k => k.Key, v => v.Value);
Uh ..これは非常に脆い解析ロジックになります。 – Zebi
はい、もちろんです。しかし、そのようなクレイジーな質問は狂った答えに値します:p –
あまりにも悪いですが、私はTupleをサポートしていない.NET 3.5を使用します。あなたのコードはとても素敵で、すばらしいです。私はまだ理解しようとしています。ありがとうございます。 –
私はあなたがCSVファイル/ストリームを読み取るためにsplit
を使用しようとしている疑いがある(クレイジーLINQの話は、私が知っています)。
string[] strGroup=returnStr.split(',');
var someThing = strGroup[GetIndex("LastName")];
と、このようなGetIndex
を定義します:あなたは何ができるか
は、配列内の最初の行を格納し、分割を使用して、ファイルをwithing行を反復しながら、あなたは、このように参照することができますです
public int GetIndex(string str)
{
return Array.IndexOf<string>(headerArray, str);
}
多くの辞書の例がありますが、コードに行形式に関する知識を埋め込む場合は、そのクラスを作成しないでください。プロパティにreturnStr
をオンにするコンストラクタを使用します。
class Group
{
public string FirstName { get; private set;}
public string LastName { get; private set;}
[...]
public Group(string returnStr)
{
string[] strGroup=returnStr.split(',');
[...]
this.FirstName = strGroup[22];
this.LastName = strGroup[23];
[...]
}
}
このアプローチでは、あなたは文字列定数のセットを維持する必要はありません。それが勝利かどうかは、あなたの特定の問題に依存します。
良いアイデアもありがとうございます。 –
しかし、あなたの文字列にはどのような名前が定義されていますか?これは列名を含む最初の行のCSVファイルですか? – Vasea