在模式匹配后在foreach循环中填充List <T>

Ale*_*lex 5 .net c# linq asp.net twitter

我对C#编程很新,需要一些帮助.

我正在尝试将从JSON提要中收集的值分配给我自己的类型,我已经定义了将JSON元素放入其中的某些字段(属性),以及从RegEx模式匹配过程派生的元素.这将允许我使用LINQ访问该对象,因为我使用List来保存我的对象.

我的代码中有一个foreach循环,它为我的RegEx方法找到的每个匹配循环.我只对有匹配的JSON feed的部分感兴趣.

所以我自己定义的类是这样的:

//simple field definition class
public class TwitterCollection
{
    public string origURL { get; set; }
    public string txtDesc { get; set; }
    public string imgURL { get; set; }
    public string userName { get; set; }
    public string createdAt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我想在RegEx Matches循环中填充List:

    foreach (Match match in matches)
    {

        GroupCollection groups = match.Groups;
        var tc = new List<TwitterCollection>()
        {
            origURL = groups[0].Value.ToString(),
            txtDesc = res.text,
            imgUrl = res.profile_image_url,
            userName = res.from_user_id,
            createdAt = res.created_at,

        };
    }
Run Code Online (Sandbox Code Playgroud)

然后代码将继续通过Linq to Objects提取和排序结果.但编译器实际上不会让我创建我的var tc = new List<TwitterCollection>()因为:'System.Collections.Generic.List'不包含'origURL'的定义......即使我已经定义了它.

如果我只是写,它不会标记错误但是我 new TwitterCollection如何在我的Linq表达式中引用它?

请帮忙!

Dav*_*d M 10

您需要在循环外实例化列表:

var list = new List<TwitterCollection>();
foreach (Match match in matches)
{

    GroupCollection groups = match.Groups;
    var tc = new TwitterCollection
    {
        origURL = groups[0].Value.ToString(),
        txtDesc = res.text,
        imgUrl = res.profile_image_url,
        userName = res.from_user_id,
        createdAt = res.created_at,
    };
    list.Add(tc);
}
Run Code Online (Sandbox Code Playgroud)

目前,您正在尝试为每个元素创建一个新列表.实际的编译错误是因为你的对象初始化器是针对一个TwitterCollection对象而不是它们的列表,但是无论如何都没有必要修复逻辑中的这个缺陷.