订购一个ICollection

5

我有一个用户对象,其中包含一组电子邮件地址。我想返回最后注册的地址。为此,我创建了一个DataTable,运行Select并按日期排序,但是否有其他方法可以直接使用该集合实现此目的?

基本上我想要的是[0]位置的地址是最后注册的。我可以使用ICollection实现这一点,还是应该使用其他东西?

用户

public ICollection<EmailAddress> EmailAddresses { get; set; } = new HashSet<EmailAddress>();

电子邮件地址:

public DateTime DateCreated { get; set; }
public int UserId { get; set; }
public string Address { get; set; }
public DateTime DateLastInvoked { get; set; } = DateTime.Now;
public int LastInvokedByClientId { get; set; }

解决方案:

EmailAddress result = this.EmailAddresses.Where(adr => adr.Active.Equals(true)).OrderByDescending(dt => dt.DateCreated).First();
2个回答

7

查阅LINQ。还有更多基本的LINQ查询操作。

using System.Linq;

EmailAddresses = EmailAddresses.OrderByDescending(r => r.DateCreated).ToList();

这会按照降序对您的集合进行排序。


1

如果您只想要最后注册的地址,您可以对列表进行排序,然后使用First(),如下所示:

var lastRegisteredAddress = EmailAddresses.OrderByDescending( a => a.DateCreated ).First();

但是我该如何直接使用OrderByDescending对List进行排序?当我需要对List<EmailAddress>排序时可用。 - SteinTheRuler
1
List<T> 实现了 IEnumerable 接口,因此您可以在其上使用 OrderByDescending 扩展方法。您只需要在顶部添加 using System.Linq 即可。 - John Wu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接