Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/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
Xamarin形式,分组域_Xamarin_Xamarin.forms_Realm_Grouping - Fatal编程技术网

Xamarin形式,分组域

Xamarin形式,分组域,xamarin,xamarin.forms,realm,grouping,Xamarin,Xamarin.forms,Realm,Grouping,我使用的是Xamarin表单(.NET标准项目)、Realm和MVVM Light,我需要根据姓氏的首字母对对象列表进行分组,以便在listview中显示跳转列表 我在尝试对RealmObject进行分组时遇到问题。我有一个这样的模特 public class Participant : RealmObject { public string FirstName {get; set;} public string LastName {get; set;} public s

我使用的是Xamarin表单(.NET标准项目)、Realm和MVVM Light,我需要根据姓氏的首字母对对象列表进行分组,以便在listview中显示跳转列表

我在尝试对RealmObject进行分组时遇到问题。我有一个这样的模特

public class Participant : RealmObject
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
    public string Email {get; set;}
    public string RegistrationCode {get; set;}

    //More properties skipped out for brevity
}
public class Grouping<K, T> : ObservableCollection<T>
{
    public K Key { get; private set; }

    public Grouping(K key, IEnumerable<T> items)
    {
        Key = key;
        foreach (var item in items)
            this.Items.Add(item);
    }
}
基于,我也有一个分组类,如

public class Participant : RealmObject
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
    public string Email {get; set;}
    public string RegistrationCode {get; set;}

    //More properties skipped out for brevity
}
public class Grouping<K, T> : ObservableCollection<T>
{
    public K Key { get; private set; }

    public Grouping(K key, IEnumerable<T> items)
    {
        Key = key;
        foreach (var item in items)
            this.Items.Add(item);
    }
}
公共类分组:ObservableCollection
{
公钥{get;private set;}
公共分组(K键,IEnumerable项)
{
钥匙=钥匙;
foreach(项目中的var项目)
此.Items.Add(item);
}
}
在我的viewmodel中,我可以像这样获取参与者(即
IQueryable

var participants = RealmInstance.All<Participant>();
var参与者=RealmInstance.All();
我现在希望能够通过姓氏的首字母缩写对其进行分组,为此我执行以下操作:

var groupedParticipants = from participant in participants
                          group participant by participant.LastName.Substring(0, 1) into pGroup
                          orderby pGroup.Key
                          select new Grouping<string, Participant>(pGroup.Key, pGroup);
var groupedParticipants=来自参与者中的参与者
按participant.LastName.Substring(0,1)将参与者分组到pGroup中
orderby pGroup.Key
选择新分组(pGroup.Key,pGroup);
这将引发以下异常:

System.TypeInitializationException:“Realms.RealmCollectionBase”的类型初始值设定项引发异常。-->System.ArgumentException:属性类型IGrouping不能表示为域架构类型


我环顾四周,但找不到分组领域集的工作示例。任何帮助都将不胜感激。

Realm不支持Linq的
GroupBy
(或基于选择的投影)

一种解决方法是将基于领域的排序查询带到标准的
列表
,然后执行Linq GroupBy

示例(使用James Montemagno的Monkey项目):
var realmSort=r.All().OrderBy(m=>m.Name.ToList();
var sorted=来自realmSort中的monkey
orderby monkey.Name
按monkey.NameSort将monkey分组为monkeyGroup
选择新分组(monkeyGroup.Key,monkeyGroup);

领域不支持Linq的
GroupBy
(或基于选择的投影)

一种解决方法是将基于领域的排序查询带到标准的
列表
,然后执行Linq GroupBy

示例(使用James Montemagno的Monkey项目):
var realmSort=r.All().OrderBy(m=>m.Name.ToList();
var sorted=来自realmSort中的monkey
orderby monkey.Name
按monkey.NameSort将monkey分组为monkeyGroup
选择新分组(monkeyGroup.Key,monkeyGroup);

感谢您的回复。我还看到了下面的链接,确认了您的回答。。。。谢谢你的回复。我还看到了下面的链接,确认了您的回答。。。。