2015-06-28 110 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任何字符串。