我正在尝试创建一个带有大型联系人列表的rolodex风格的分组。实体框架。
我有一个Contacts
模型,它需要包装在包含Initial
属性的GroupedContacts
模型中。我想,在存在信件记录的地方,要填充初始属性和要填充的Contacts
列表:-
public char Initial { get; set; }
public List<Contacts> Contacts { get; set; }
谁能借给我他们的禅宗水平的LINQ来实现这个吗?
为了完整起见,我的联系人get
目前看起来像这样:-
using (var ctx = new atomicEntities())
{
var contacts = from c in ctx.Contacts
where c.ClientId == clientid
select c;
return contacts.ToList();
}
一如既往地感谢帮助:)
编辑
我把我的问题重读了几遍,觉得有点模糊。为了澄清,我试图创建这样的数据:-{
initial: 'c',
contacts: [
{
name: 'Charlie Chaplin',
primaryContact: {
type: 'phone',
value: '0123456789'
}
},
{
name: 'Charlie Sheen',
primaryContact: {
type: 'email',
value: 'sheen@charliepower.com'
}
},
{
name: 'Colin Caterpiller',
primaryContact: {
type: 'email',
value: 'colin@caterpiller.com'
}
}
]
}
看看是否有效:
contacts
.GroupBy(c=>string.IsNullOrEmpty(c.Name) ? '' : c.Name[0])
.Select(g=>new GroupedContacts {Initial = g.Key, Contacts = g.ToList()});
将按Name
属性的第一个字符分组(如果Name
为空或null
,则为空字符串),并返回分组键为Initial
,该组中的联系人列表为Contacts
。