gpt4 book ai didi

c# - 最后 3 条已发送的消息与最新消息的对比,同时仅保存最后 3 条最新消息?

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:59 25 4
gpt4 key购买 nike

目前我有一个简单的用户类,如下所示:

public class Users
{
public int ID { get; set; }
public string Name { get; set; }
public Groups Access { get; set; }
public IPAddress IP { get; set; }
public bool IsProtected { get; set; }
public bool IsInvisible { get; set; }
}

现在我想存储用户最后 3 条发送的消息,并能够比较用户新的最后一条消息是否与之前 3 条存储消息中的任何一条匹配,如果不匹配,则从列表中删除最旧的消息并添加新消息。

我最初想的是简单地使用一个字符串列表,然后去做这样的事情:

bool msg_match = user.LastMessages.Any(x => String.Equals(x, msg, StringComparison.OrdinalIgnoreCase));
if (msg_match)
{
// punish user
user.LastMessages.Clear();
}
else
{
// some way to remove oldest message and leave only the 3 newest messages
user.LastMessages.Add(mensagem);
}

上述方法确实有效,但我对如何选择要删除的最旧消息导致最后一条最新消息有点无能为力,也不确定此方法是否可行或是否有更好的方法接近这个?

PS:我的标题听起来很困惑我想如果你对标题有更好的想法请告诉我或更改它。

最佳答案

您可以将消息存储在 LinkedList<string> 中.这将使您更容易检查:

bool msg_match = user.LastMessages.Any(x => String.Equals(x, msg, StringComparison.OrdinalIgnoreCase));
if (msg_match)
{
// punish user
user.LastMessages.Clear();
}
else
{
// some way to remove oldest message and leave only the 3 newest messages
user.LastMessages.AddFirst(mensagem);
if (user.LastMessages.Count > 3)
user.LastMessages.RemoveLast();
}

关于c# - 最后 3 条已发送的消息与最新消息的对比,同时仅保存最后 3 条最新消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com