使用foreach从列表中获取值

时间:2012-02-12 03:38:28

标签: c#

我的列表中包含“

等值
[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),然后将其传递给方法?

5 个答案:

答案 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实例都有IdViews属性,您现在可以做正确的事情:

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("}","");