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
C# 在域xamarin中更新和删除_C#_Xamarin_Realm - Fatal编程技术网

C# 在域xamarin中更新和删除

C# 在域xamarin中更新和删除,c#,xamarin,realm,C#,Xamarin,Realm,我在realm数据库中添加并更新了以下json JSON 类,该类存储在json之上 public class ActivityType : RealmObject, IEntity { [PrimaryKey] public string id { get; set; } public string name { get; set; } } 为了创建和更新,我使用下面的realm语句 realm.WriteAsync(tempRealm =>{

我在realm数据库中添加并更新了以下json

JSON

类,该类存储在json之上

public class ActivityType : RealmObject, IEntity
{
    [PrimaryKey]
    public string id { get; set; }
    public string name { get; set; }


}
为了创建和更新,我使用下面的realm语句

realm.WriteAsync(tempRealm =>{


    tempRealm.Add(data, true);


});
现在我想要的是,如果我的JSON通过删除一个条目而改变,那么我的领域也应该在触发
tempRealm.Add(data,true)时删除该条目

我确实理解
tempRealm.Add(data,true)
用于更新记录,它将添加一个主键不存在的新条目,否则将替换它。
但如果主键不存在,是否有任何方法可以将该记录从域中删除,这是不可能的,并且很少有需要这样做的情况。作为解决方法,更新后,您可以执行:

var activities = realm.All<ActivityType>().ToArray();
var ids = new HashSet<string>(data.Select(d => d.id));
realm.Write(() =>
{
    foreach (var activity in activities)
    {
        if (!ids.Contains(activity.Id))
        {
            realm.Remove(activity);
        }
    }
});
var activities=realm.All().ToArray();
varids=newhashset(data.Select(d=>d.id));
realm.Write(()=>
{
foreach(活动中的var活动)
{
如果(!ids.Contains(activity.Id))
{
领域。移除(活动);
}
}
});
"listActivityTypeMaster": [

    {
        "id": "POC",
        "name": "POC"
    }
]
var activities = realm.All<ActivityType>().ToArray();
var ids = new HashSet<string>(data.Select(d => d.id));
realm.Write(() =>
{
    foreach (var activity in activities)
    {
        if (!ids.Contains(activity.Id))
        {
            realm.Remove(activity);
        }
    }
});