检查LINQ中的字符串是否为GUID

时间:2014-11-24 12:40:33

标签: c# linq

我正在使用ASP.NET Web窗体应用程序。我的课程Client有属性

public string Id { get; set; }

在一些地方,我需要检查Id是否实际上是一个guid。例如,我有这段代码:

Guid GuidID;
foreach (Client item in clients)
{
    bool isGUID = Guid.TryParse(item.Id, out GuidID);
    if (!isGUID)
    {
        hasExistingClient = true;
    }
}
if (hasExistingClient)
{
    // Do something...
}

这是很多代码,只是为了检查List<Client> clients(客户端)中是否有Client真实Id而不是guid。我想,如果可能的话,让Linq查询出来。像

这样的东西
if (clients.Any(c => c.Id is GUID))

但我不知道在is GUID的地方写些什么。

2 个答案:

答案 0 :(得分:9)

Guid guidID;
bool hasGUID = clients.Any(c => Guid.TryParse(c.Id, out guidID));

答案 1 :(得分:0)

您可以使用OfType从Guid类型的项中提取值。但是,我怀疑你需要这个,因为你有字符串中的值。

var result = items.OfType();

因此,你可以使用这个:

   var items = new[] {"{Guid 1}", "{Guid 2}"}.ToList();
            var guidItem = new Guid();
            var result = from item in items
                where Guid.TryParse(item, out guidItem)
                select guidItem;

            if (result.Any())
            {
                // you have got some itesm... 
            }