DataTableの特定の列のすべての行の値を取得し、そこからHashSetを作成する方法は、組み込みの方法(LINQなのでしょうか?列の型もStringです。DataTableの列からHashSetを作成する
私は明らかにこれをループで行うことができましたが、別の方法があるかどうか疑問に思っていましたか?
私は.net 3.5 btwを使用しています。
おかげで、
AJ
DataTableの特定の列のすべての行の値を取得し、そこからHashSetを作成する方法は、組み込みの方法(LINQなのでしょうか?列の型もStringです。DataTableの列からHashSetを作成する
私は明らかにこれをループで行うことができましたが、別の方法があるかどうか疑問に思っていましたか?
私は.net 3.5 btwを使用しています。
おかげで、
AJ
使用HashSet<T> Constructor (IEnumerable<T>)
はこれを試すが、ループせずに、ハッシュテーブルの値の配列値をコピーする方法がわかりません。
string[] strArray = datatable.AsEnumerable().Select(s => s.Field<string>("MyContent")).ToArray<string>();
次に、ハッシュテーブル値に物をコピーします(ループは一方向です)。
希望します。
ありがとうございました。私はHashSet
あなたのコードを投稿することはできますか – Sandy
LINQを使用して私の提案:
IEnumerable<string> values =
dataTable
.Rows
.Cast<DataRow>()
.Select(row => row["ColumnName"])
.Cast<string>();
HashSet<string> hashSet = new HashSet<string>(values);
拡張メソッド
public static class Extensions
{
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
}
}
を作成し、その後
HashSet<string> values = table.AsEnumerable().Select(row => row.Field<string>("Columnname")).ToHashSet();
を呼び出すには、プロジェクトを作成し、3.5にそれを切り替えます。 これを達成するための単純なライナーがあります(LINQには感謝します)。 これは将来これを見ている人に役立ちます。
HashSet<string> yourHashSet = new HashSet<string>(dt.AsEnumerable().Select(x => x.Field<string>("YourColumn")))
注:このソリューションは、.NET Frameworkのためである3.5+
まあDataTable.Columns [0]あなたのリストの権利を与えます。あなたはLinqの拡張機能を使ってこれまでどおり何でもすることができます。 – Zenwalker