我正在尝试创建一个rolodex风格的分组,其中包含大量与LINQ&实体框架。
我有一个Contacts
模型,需要包含在GroupedContacts
模型中,该模型包含Initial
属性。我想,如果信件中存在记录,则要填写的初始属性和要填充的Contacts
列表: -
public char Initial { get; set; }
public List<Contacts> Contacts { get; set; }
任何人都可以借给我他们的LINQ级别的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'
}
}
]
}
答案 0 :(得分:3)
看看是否有效:
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
。