这是我的数据库表中的数据:这是我的业务对象阅读重复的数据行使用它们LINQ
:
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个对象持此数据:
现在想我是怎么得到的数据为3业务对象... 这就是我想知道的方式。一个提示可能是不同的,并为的IEqualityComparer 3个属性... 只是一个假设...
UPDATE
问题更新:
请阅读注释代码:)
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();
您应该将表分成两个以避免相同的行。比你可以直接使用Linq2Sql再次使用它并获得与业务对象相同的结构 – Magnus 2011-06-08 21:17:27
不能在这里更改任何内容。它是这样的;-) – msfanboy 2011-06-08 21:25:32