我在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的数量......
在我转移到通用列表之前,我曾经把这一切都搞定了。现在我为方便起见,它不会起作用。
我真的很感谢有人带我走出我的痛苦!提前谢谢。
答案 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作为示例。)