1

とても簡単です。

List<string> stringArr = new List<string>();
foreach (var item in db.IconTags)
{
    stringArr.Add(item.Tag);
}
string outPut = string.Join(",", stringArr);

たとえば、次のように言うことができたらいいのにと思います。

string outPut = string.Join(",", db.IconTags.Select(t => t.Tag).ToTArray());

またはmaybee

string outPut = string.Join(",", db.IconTags, t => t.Tag);

あなたにできるクールなことはありませんか?自分でメソッドを作ることもできましたが、何かが組み込まれていることを期待していました。

4

4 に答える 4

5

.NET 4以降では、次のように記述できます。

string output = string.Join(",", db.IconTags.Select(t => t.Tag));

.NET 3.5では、次の呼び出しを追加する必要がありますToArray

string output = string.Join(",", db.IconTags.Select(t => t.Tag).ToArray());
于 2012-07-01T18:27:24.827 に答える
0

はい、できます。

最初のコードが機能するフレームワークバージョンをターゲットにしている場合は、最初の願いも機能します。メソッドが。を取る.ToArray()ので、それがなくても機能します。String.JoinIEnumerable<string>

フレームワーク3.5では、が必要になります.ToArray()が、フレームワーク3.5では最初のコードも機能しません。

于 2012-07-01T18:36:02.857 に答える
0

オブジェクトのインスタンス化/ラムダ関数の数を抑えたい場合は、次のこともできます。

StringBuilder builder = new StringBuilder();
for(var item in db.IconTags) {
    builder.Append(item.Tag).Append(",");
}
// We have one extraneous , so remove it
if(builder.Length > 1) {
    builder.Remove(builder.Length - 1, 1);
}
String output = builder.ToString();
于 2012-07-01T18:38:45.163 に答える
0

最適化によって私が推測しているあなたの選択肢に基づいて、あなたはより効率的な計算ではなく、より少ないコード行を意味します。

2番目の選択肢は、Linqを使用して機能するはずです。

string.Join(",", db.IconTags.Select(iconTag => iconTag.Tag).ToArray());

更新:他の人が言っているように、ToArrayは.NET4以降でドロップできます。

于 2012-07-01T18:45:21.683 に答える