Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用LINQ按字母顺序对记录进行分组的最有效方法_Linq_Entity Framework - Fatal编程技术网

使用LINQ按字母顺序对记录进行分组的最有效方法

使用LINQ按字母顺序对记录进行分组的最有效方法,linq,entity-framework,Linq,Entity Framework,我正在尝试使用LINQ&Entity Framework创建一个rolodex样式的分组,其中包含大量联系人列表 我有一个Contacts模型,需要包装在GroupedContacts模型中,该模型包含一个Initial属性。如果存在信函记录,我希望填写初始属性,并填写中的联系人列表:- public char Initial { get; set; } public List<Contacts> Contacts { get; set; } 一如既往,我们感谢您的帮助:) 编辑

我正在尝试使用LINQ&Entity Framework创建一个rolodex样式的分组,其中包含大量联系人列表

我有一个
Contacts
模型,需要包装在
GroupedContacts
模型中,该模型包含一个
Initial
属性。如果存在信函记录,我希望填写初始属性,并填写中的
联系人
列表:-

public char Initial { get; set; }
public List<Contacts> Contacts { get; set; }
一如既往,我们感谢您的帮助:)

编辑

我把我的问题重读了几遍,觉得有点模糊。为了澄清,我试图创建如下数据:-

{
        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
,则为空字符串),并将分组键返回为
首字母,将该组中的联系人列表返回为
联系人查看此操作是否有效:

contacts
.GroupBy(c=>string.IsNullOrEmpty(c.Name) ? '' : c.Name[0])
.Select(g=>new GroupedContacts {Initial = g.Key, Contacts = g.ToList()});

这将按
Name
属性的第一个字符分组(如果
Name
为空或
null
,则为空字符串),并返回分组键作为
首字母,返回该组中的联系人列表作为
联系人

解释您的
联系人
类。您想按哪个属性分组?@HamletHakobyan,请查看最新编辑-这可能会解释得更详细一些…解释您的
联系人
类。您想按哪个属性分组?@HamletHakobyan,请查看最新编辑-这可能会解释更多…+1,但我认为OP需要GroupedContacts对象,而不是匿名对象+1优秀、快速的响应。让我试一试,必要时我会发回/标记答案。谢谢大家;)+1但我认为OP需要GroupedContacts对象,而不是匿名1+1优秀、快速的响应。让我试一试,必要时我会发回/标记答案。谢谢大家;)