用linq压缩这个逻辑

本文关键字:linq 压缩 | 更新日期: 2024-10-18 12:27:07

如何将以下逻辑转换为LINQ?

CCD_ 1是CCD_。request.flagged是请求POCO中的一个数值。

if (request.Flagged == 1)
{
    if (!patient.UserFlaggedList.Contains(request.UserId))
    {
         flaggedList.Add(request.UserId);
    }
}
else if (request.Flagged == 0)
{
    string usrid = flaggedList.Where(a => a == request.UserId).FirstOrDefault<string>();
    flaggedList.Remove(usrid);
}

用linq压缩这个逻辑

它可以归结为两个简单的IF语句,第二部分进一步缩短:

if (request.Flagged == 1 && !patient.UserFlaggedList.Contains(request.UserId))
    flaggedList.Add(request.UserId);
if (request.Flagged == 0)            
    flaggedList.Remove(flaggedList.FirstOrDefault(a => a == request.UserId));

这是非常精简和清晰的,不确定为什么要让它更精简。如果你真的想缩短它,也许你可以这样做:

if (request.Flagged == 1 && !patient.UserFlaggedList.Contains(request.UserId))
{
    flaggedList.Add(request.UserId);
}
else if (request.Flagged == 0)
{
    flaggedList.Remove(flaggedList.Where(a => a == request.UserId).FirstOrDefault<string>());
}