2015-06-28 106 views
7

我有以下代碼行來創建字符串列表。如何將字符串列表轉換爲指令列表

List<string> tstIdss = model.Ids.Where(x => x.Contains(entityId)).Select(x => x.Split('_').First()).ToList(); 

我需要將其轉換爲Guid列表。即List<Guid> PermissionIds.

model.PermissionIds= Array.ConvertAll(tstIdss , x => Guid.Parse(x)); 

我試過上面的方法,但得到以下錯誤。 model.PermissionIds在我的模型類中實現如下。用於方法 'System.Array.ConvertAll(TInput [],System.Converter)'

public List<Guid> PermissionIds { get; set; } 

錯誤3

類型參數不能從使用推斷。 嘗試明確指定類型參數。

回答

15

您可以使用LINQ的SelectToList方法:

model.PermissionIds = tstIdss.Select(Guid.Parse).ToList(); 

或者你可以使用List<T>.ConvertAll方法:

model.PermissionIds = tstIdss.ConvertAll(Guid.Parse); 
+0

哦對,我真的不需要lambda表達式,呵呵。 –

+0

@Thomas Levesque,優秀。有用。 – immirza

+0

@Thomas Levesque,一個更加快速的確認,我有「string entityId = entity」;在這種情況下,我如何將'entityId'轉換爲Guid?請 – immirza

5

我不熟悉ConvertAll,但嘗試使用Select

model.PermissionIds = tstIdss.Select(s=>Guid.Parse(s)).ToList(); 
1

我有以下代碼行來創建一個字符串列表。 我需要將其轉換爲Guid列表。

如果您的字符串列表可以安全解析爲Guids,我推薦@Thomas Leveque的答案。

如果你的字符串列表可能包含一些非的GUID,它是安全使用的TryParse如下:

Guid bucket = Guid.Empty; 
model.PermissionIds = tstIdss.Where(x => Guid.TryParse(x, out bucket)).Select(x => bucket).ToList(); 

WHERE子句會過濾掉不能被格式化爲一個GUID任何字符串。