搜索多值列表的算法c#

时间:2018-05-15 10:18:48

标签: c# linq search arraylist

我有以下两个清单。每个列表包含唯一ID,消息ID,回复ID。我想要做的是当给出唯一ID时,它的通信消息ID和回复id必须在两个列表中搜索,如果找到的值也应该发生在该消息ID或回复ID上。

List<EmailDetails> inbox_email_details = new List<EmailDetails>();
List<EmailDetails> sent_email_details = new List<EmailDetails>();

public class EmailDetails
{
    public string UniqueID { get; set; }
    public string MessageID { get; set; }
    public string ReplyID { get; set; }
}

View Lists

如果我传递了唯一的ID&#34; 2&#34;它的消息ID&#34; b&#34;和ReplyID&#34; h&#34;应该在两个列表中搜索。在这里&#34; b&#34;导致第二个列表。然后也应该搜索结果值。

我知道这是一项令人难以忍受的任务,但无论如何我能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

正如您所说,您希望按唯一ID进行搜索,我正在考虑唯一意味着列表中只有一条记录可用。如果您只想找到一条记录,那么您可以使用FirstOrDefault < / p>

//OP used 2 as unique ID, I added constant we can use variable as well
    EmailDetails emailDetails = inbox_email_details?.FirstOrDefault(f => f.UniqueID == "2");

这将为expertDetails提供uniqueId = 2,MessageID = b,replyId = h

的实例

现在您要使用此结果进行搜索,对吗?

然后首先检查记录是否存在?然后使用相同的linq子句

   if(emailDetails != null)
    {
       //Here you haven't specifically mentioned search entity
       EmailDetails result = sent_email_details?.FirstOrDefault(f => f.MessageId== emailDetails.MessageId || f.ReplyId == emailDetails.ReplyId);

    }
?检查列表之前的

.FirstOrDefault是否为空