我有一个 JArray,从文件中读取:
private void RemoveCatalog(Catalog catalog) {
System.IO.StreamReader filereader = new System.IO.StreamReader(@appDirectory + "\\list");
JArray myjarray = JArray.Parse(filereader.ReadToEnd());
filereader.Close();
string json = " {\"token\":\"" + catalog.Token + "\",\"name\":\"" + catalog.Name +"\",\"logo\":\"" + catalog.Logo + "\",\"theme\":\"" + catalog.Theme + "\"}";
JObject myCatalogAsJObject = JObject.Parse(json);
myjarray.Remove(myCatalogAsJObject);
}
我想删除对应的JObjectmyCatalogAsJObject
变量,但它不起作用,因为答案是myjarray.Contains(myCatalogAsJObject)
是假的。
问题是myjarray
实际上包含它:它是我的 JArray 中唯一的 JObject。
If I do myCatalogAsJObject.ToString().Equals(myjarray.First.ToString())
,但是答案是正确的。
我被困住了。
.Contains
(and .Remove
) 默认情况下会比较参考。既然你正在创建一个new JObject
,该数组不包含该内容instance.
You could从数组中获取对象的实例并删除that:
JObject match = myjarray.FirstOrDefault(j => j.token == catalog.token &&
j.name == catalog.name &&
j.logo == catalog.logo &&
j.theme == catalog.theme);
myjarray.Remove(match);
编辑:这是您的代码,经过简化:
JToken match = myjarray.FirstOrDefault(j => j.ToString().Equals(myCatalogAsJObject.ToString()));
myjarray.Remove(match);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)