方法 1:
DataView view = new DataView(table);
DataTable distinctValues = view.ToTable(true, "id");
方法 2:
データ テーブルの列名に一致するクラスを作成する必要があります。その後、次の拡張メソッドを使用して Datatable を List に変換できます。
public static List<T> ToList<T>(this DataTable table) where T : new()
{
List<PropertyInfo> properties = typeof(T).GetProperties().ToList();
List<T> result = new List<T>();
foreach (var row in table.Rows)
{
var item = CreateItemFromRow<T>((DataRow)row, properties);
result.Add(item);
}
return result;
}
private static T CreateItemFromRow<T>(DataRow row, List<PropertyInfo> properties) where T : new()
{
T item = new T();
foreach (var property in properties)
{
if (row.Table.Columns.Contains(property.Name))
{
if (row[property.Name] != DBNull.Value)
property.SetValue(item, row[property.Name], null);
}
}
return item;
}
そして、次を使用してリストから区別できます
YourList.Select(x => x.Id).Distinct();
これにより、ID だけでなく、完全なレコードが返されることに注意してください。