【发布时间】:2012-12-18 08:11:30
【问题描述】:
尝试使用 foreach 循环遍历对象列表,但遇到编译器错误时遇到了麻烦
Foreach 语句无法对变量对象进行操作,因为它不包含
GetEnumerator的定义。
我将文件解析为匿名列表,然后在方法中使用该列表。
var list = (from s in File.ReadAllLines(path).Select(a => a.Split(new[] { '|' }, StringSplitOptions.None))
select new
{
Nbr = s[0].Trim(),
Name = s[1].Trim(),
Phone = s[2].Trim(),
Addr = s[3].Trim()
}).ToList();
findmatch(list);
}
Public static void findmatch(object list)
{
foreach(var entry in list)
我也尝试像这样更改代码:
foreach(var entry in list.GetType().GetProperties()) as I still get this error
抱歉,是的,我进行了编辑以识别我正在将列表转移到另一个方法。
【问题讨论】:
-
您可以删除
ToList(),但是,它应该可以使用或不使用。 -
如果我为
File.ReadAllLines(path)存根一些数据,它工作得很好:ideone.com/fSb0Na -
这不是你的真实代码。这可以正常工作并且编译得很好。如果您想在 StackOverflow 上提问,请展示一个简短而完整的示例,以便重现您遇到的问题。不要过于简单化。
-
@ERead:我刚刚用真实文件做了一个测试,它仍然有效。对于编译器而言,数据来自
File.ReadAllLines还是string数组并不重要。 -
没人关心那些解释。如果您需要帮助,我重复一遍:展示一个简短而完整的示例,以便重现您遇到的问题。带有 Main 方法的控制台应用程序就可以了。否则,您的问题将被关闭,因为它不是真正的问题。简单,简单,容易。正是我们希望您向我们展示的示例。