我的列表中包含“
等值[0] = "{ id = ES10209005, views = 501 }"
[1] = "{ id = HYT0209005, views = 5678}"
[3] = "{ id = POI0209005, views = 4568}"
我想将值(id,views)传递给使用for for each循环的方法。
方法(ID,观看次数)
类似的东西:
foreach (string v in updatereponse)
{
method()
}
如何从列表中的每一行中隔离每个值(id,views),然后将其传递给方法?
答案 0 :(得分:2)
该列表只包含一堆字符串,基于此解决问题的任何内容都只是一种解决方法(例如字符串解析)。您应该切换到强类型模型,例如定义一个类ViewCount
:
public class ViewCount
{
public string Id {get;set;}
public int Views {get;set;}
}
然后您可以使用List<ViewCount>
填充列表:
List<ViewCount> viewcounts = new List<ViewCount>();
viewCounts.Add(new ViewCount() { Id = "ES10209005", Views = 501 });
由于每个ViewCount实例都有Id
和Views
属性,您现在可以做正确的事情:
foreach (var item in updatereponse)
{
method(item.Id, item.Views);
}
如果要将此数据保存在文件中,另一种方法是使用XML而不是自定义字符串,那么您可以使用Linq to XML来填充List<ViewCount>
,例如:使用像这样的简单XML:
<ViewCounts>
<ViewCount id="ES10209005" views="501" />
</ViewCounts>
然后您可以加载您的列表:
XElement viewXml = XElement.Load("test.xml");
List<ViewCount> viewCounts = viewXml.Descendants("ViewCount")
.Select(x => new ViewCount()
{
Id = (string)x.Attribute("id"),
Views = (int)x.Attribute("views")
}).ToList();
答案 1 :(得分:0)
您可以使用String方法检索项目(例如,使用Split和SubString),也可以使用正则表达式。
E.g。
var list = UpdateResponse[0].Split("=,} ") ;
将导致列表被所有这些字符(包括空格)拆分。
然后检查要使用的正确索引(使用调试器)。然后你得到类似的东西:
var id = list[5];
var views = list[8];
(注意:检查指数5或8,它们只是一个猜测)。
答案 2 :(得分:0)
foreach (string v in updateresponse)
{
var values = v.Split(",");
var id = values[0].Replace("{ id = ", "").Trim();
var view = values[1].Replace("views = ", "").("}","").Trim();
method(id, value);
}
答案 3 :(得分:0)
这是另一种方式......您可能想要添加错误检查:
String Data = "{ id = ES10209005, views = 501 }";
String[] Segments = Data.Split(new char[] { ' ', ',' });
string ID = Segments[3];
int views = int.Parse(Segments[7]);
答案 4 :(得分:0)
假设你的String结构就像你总是向我们展示的那样,这对你有用。
// First split id and views part.
String[] firstSplit = v.Split(',');
// Get the respected value for each part.
String id = firstSplit[0].Split('=')[1].Trim();
String views = firstSplit[1].Split('=')[1].Trim().Replace("}","");