これは私のデータベーステーブルのデータです:
それが私のビジネスオブジェクトです:
public class Unit
{
public Unit()
{
MemberIdList = new List<String>();
}
public String UnitType { get; set; }
public String UnitZoom { get; set; }
public String MemberZoom { get; set; }
public List<String> MemberIdList { get; set; }
}
データベースからのデータ全体がフェッチされ、DataTable に入れられます。
次に、Linq 変換を行います...
このデータを保持する 3 つの Unit オブジェクトを含む List を返した後:
どのようにして 3 つのビジネス オブジェクトにデータを取得したかを推測してください...それが私が知りたい方法です。ヒントは、3 つのプロパティの Distinct と IEqualityComparer かもしれません...単なる仮定...
アップデート
質問が更新されました:
コード内のコメントを読んでください:)
var groupedCollection = table.AsEnumerable()
.GroupBy(row => new
{
UType = row.Field<string>("UnitType"),
UZoom = row.Field<string>("UnitZoom"),
MZoom = row.Field<string>("MemberZoom"),
MOrder = row.Field<int>("MemberOrder"),
// MemberOrder をグループ キーに含めたくありませんが、後でこのプロパティを使用して並べ替えます... });
var unitCollection = groupedCollection
.Select(g => new Unit
{
UnitType = g.Key.UType,
UnitZoom = g.Key.UZoom,
MemberZoom = g.Key.MZoom,
MemberIdList = g.Select(r => r.Field<string>("MemberId")).OrderBy(b => g.Key.MOrder).ToList(),
});
List<Unit> units = unitCollection.ToList();