我有以下两个清单。每个列表包含唯一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; }
}
如果我传递了唯一的ID&#34; 2&#34;它的消息ID&#34; b&#34;和ReplyID&#34; h&#34;应该在两个列表中搜索。在这里&#34; b&#34;导致第二个列表。然后也应该搜索结果值。
我知道这是一项令人难以忍受的任务,但无论如何我能做到这一点吗?
答案 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
是否为空