这是我的数据库表中的数据:
那是我的业务对象:
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 对象的列表后,这些对象包含这些数据:
现在猜猜我是如何将数据放入 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();