用guid比较foreq到linq

Ker*_*haw 0 c# linq foreach guid

我想将此方法中的foreach转换为linq表达式.我有2次尝试/捕获因为我不能总是指望在guid或guidToFind列表中传递的字符串是有效的guid字符串.

    public static bool IsGuidInList(List<string> guids, string guidToFind)
    {
        try
        {
            var guid = new Guid(guidToFind.Trim());
            foreach (var g in guids)
            {
                try
                {
                    var g2 = new Guid(g.Trim());
                    if (g2 == guid)
                        return true;
                }
                catch {} // swallow exception
            }
        }
        catch{} // swallow exception
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

AD.*_*Net 6

   var tg = Guid.Empty; 
   guids.Any(g=> g!= null 
       && Guid.TryParse(g.Trim(), out tg) && new Guid(g.Trim()) == guid)
Run Code Online (Sandbox Code Playgroud)


Jas*_*oyd 5

public static bool IsGuidInList(List<string> guids, string guidToFind)
{
    try
    {
        var guid = new Guid(guidToFind.Trim());
        return
            guids
            .Select(x =>
            {
                Guid result;
                return Guid.TryParse(x, out result) ? (Guid?)result : null;
            })
            .Where(x => x.HasValue)
            .Any(x => x.Value == guid);
    }
    catch { } // swallow exception
    return false;
}
Run Code Online (Sandbox Code Playgroud)