我正在读取以逗号分隔的数字ID列表,该列表存储为字符串.我需要检查该列表中是否已存在id.例如:
"1,2,3"
如果我检查"2"我应该找到它,但如果我检查"22"我不应该.
什么是最直接,最简洁的方法?
我目前的代码如下:
HttpCookie cookie = Request.Cookies.Get("wishlist"); if (cookie != null) { var JSONstring = cookie.Value; //Cookie stored as JSON Dictionary> jObj = JsonConvert.DeserializeObject >>(JSONstring); // Retreive only the nodeId of each item and store it in a CSV list string umbracoCSV = String.Join(",", jObj.SelectMany(x => x.Value).Select(x => x.nodeId)); // Convert the CSV into an IEnumerable list of ints IEnumerable umbracoNodeIdList = umbracoCSV.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse); foreach(int umbracoNodeId in umbracoNodeIdList){ if(umbracoNodeId == 2){ // Do code if it matches }else{ // Do code if it doesn't match } } }
正如您所看到的,此代码包含一个非常不必要的循环,我真的希望能够直接解析CSV字符串的值而不是执行嵌套循环(因为如果不可能,此循环将嵌套在另一个循环中).
任何帮助将不胜感激.
您可以使用以下Any
方法简化代码:
bool isExists = umbracoCSV.Split(',').Any(x => x == "2"); if(isExists) { }