2014-11-24 54 views
0

我正在研究ASP.NET Web窗体应用程序。我有Client类物业检查字符串是否是LINQ中的GUID

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的地方写。

回答

9
Guid guidID; 
bool hasGUID = clients.Any(c => Guid.TryParse(c.Id, out guidID)); 
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... 
      }