LINQ返回类名而不是值数据

时间:2010-01-15 19:03:23

标签: c# .net asp.net linq twitter

我在List中拥有一组TwitterCollection对象。我通过foreach循环填充TwitterCollection对象(tc),然后通过LINQ访问它。

我的类及其属性如下所示:

//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; }
    public string realURL { get; set; }
    public string googleTitle { get; set; }
    public string googleDesc { get; set; }
}

然后我继续用一个循环来填充它,通过一组RegEx匹配:

var list = new List<TwitterCollection>();

    foreach (Match match in matches)
    {

        GroupCollection groups = match.Groups;
        var tc = new TwitterCollection
        {
            origURL = groups[1].Value.ToString(),
            txtDesc = res.text,
            imgURL = res.profile_image_url,
            userName = res.from_user_id,
            createdAt = res.created_at,
        };
        list.Add(tc);
    }

最后,我正在使用LINQ查看集合并仅提取某些项目以供显示:

    var counts = from URL in list
                 group URL by URL into g
                 orderby g.Count()
                 select new { myLink = g.Key, Count = g.Count() };

所有这些的结果是count.myLink中的“TwitterCollection”一词的长列表,没有URL的数量......

在我转移到通用列表之前,我曾经把这一切都搞定了。现在我为方便起见,它不会起作用。

我真的很感谢有人带我走出我的痛苦!提前谢谢。

1 个答案:

答案 0 :(得分:2)

您的列表属于List<TwitterCollection>,因此URL变量的类型为TwitterCollection。因此,TwitterCollection被选入g.Key(因此也是myLink),并被呈现为字符串“TwitterCollection”。

将您的查询更改为:

var counts = from tc in list
             group tc by tc.origURL into g  // note by tc.origURL to extract the origURL property
             ...

(从您的代码中不清楚您要分组的URL,因为TwitterCollection包含多个URL。我使用origURL作为示例。)