我有一个 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/