Xamarin形式,分组域
我使用的是Xamarin表单(.NET标准项目)、Realm和MVVM Light,我需要根据姓氏的首字母对对象列表进行分组,以便在listview中显示跳转列表 我在尝试对RealmObject进行分组时遇到问题。我有一个这样的模特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
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);
感谢您的回复。我还看到了下面的链接,确认了您的回答。。。。谢谢你的回复。我还看到了下面的链接,确认了您的回答。。。。