c# - 在 LINQ group by procedure 之后访问 List<T> 中保存的对象属性

标签 c# asp.net linq twitter

我有一个 List<T>它持有几个名为 tc 的对象 TwitterCollection . tc 的每个实例包含 5 个属性。

TwitterCollection 类如下所示:

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; }

}

我正在运行一个 Linq to objects 语句:

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

现在我遇到的问题是我无法访问任何 tc特性。我可以访问 origURL没问题,因为它已分配给 g ...但是txtDesc , imgURL其他属性似乎无法访问。我需要上述语句才能适本地对我的数据进行排序。

如何修改我的 Linq 语句以包含 tc 的所有其他属性, 再加上它仍然按 Count() 排序/排序就像现在一样。

最佳答案

您已经对结果进行了分组 - 那么您希望获得哪个用户名?该组是一个完整的元素序列,所有元素都具有相同的 URL。如果你想使用第一个,你可以这样做:

var counts = from tc in sList
             group tc by tc.origURL into g
             orderby g.Count()
             select new { myLink = g.Key, First = g.First(), Count = g.Count() };

然后你可以这样做:

foreach (var group in counts)
{
    Console.WriteLine(group.First.userName);
}

如果你想要整个组,那么只需选择它:

var counts = from tc in sList
             group tc by tc.origURL into g
             orderby g.Count()
             select new { Group = g, Count = g.Count() };

不可否认,在这一点上,Count 的意义不大——你可以这样做:

var groups = sList.GroupBy(tc => tc.origURL)
                  .OrderBy(g => g.Count());

然后您可以使用:

foreach (var group in groups)
{
    int count = group.Count();
    var key = group.Key;
    foreach (var entry in group)
    {
        // Use each item in the group, etc.
    }
}

关于c# - 在 LINQ group by procedure 之后访问 List<T> 中保存的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081798/

相关文章:

c# - 带有 Windows 10 通用应用程序的 iTextSharp

.net - DateTime.ToString() 显示子午线为 "A.M."或 "P.M."

c# - 从通用列表中查找项目

c# - ASP.NET 多线程是否影响 Structuremap 单例类?

c# - 在运行时构造 where 子句

c# - 更改 Internet Explorer 安全设置(初始化和脚本 activex 控件不裸...)

javascript - 从javascript刷新更新面板内的用户控件

c# - 如何从查询中获取值并将其与字符串进行比较?

c# - 在 LINQ 求和表达式中处理 null

大列表的 C# Linq 性能