2014-11-24 79 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... 
      }