用linq压缩这个逻辑

时间:2013-12-17 17:19:10

标签: c# linq

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

Flaggedlist是一种List<string>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);
}

2 个答案:

答案 0 :(得分:0)

这非常简洁明了,不确定为什么你想让它更加浓缩。 如果你真的想缩短它,也许你可以这样做:

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>());
}

答案 1 :(得分:0)

它可归结为两个简单的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));