gpt4 book ai didi

c# - JArray.Contains 问题

转载 作者:太空狗 更新时间:2023-10-30 00:24:37 27 4
gpt4 key购买 nike

我有一个 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);

}

我想删除对应于 myCatalogAsJObject 变量的 JObject,但是它不起作用,因为 myjarray.Contains(myCatalogAsJObject) 的答案是 false。

问题是 myjarray 实际上包含它:它是我的 JArray 中唯一的 JObject。

如果我执行 myCatalogAsJObject.ToString().Equals(myjarray.First.ToString()),答案是正确的。

我卡住了。

最佳答案

.Contains(和.Remove)默认会比较引用。由于您正在创建一个 JObject,因此该数组不包含该实例

可以从数组中获取对象的实例并删除那个:

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);

关于c# - JArray.Contains 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23343771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com