如何将字符串列表转换为guid列表

时间:2015-06-28 16:52:33

标签: c#

我有以下代码行,用于创建字符串列表。

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

我需要将其转换为Guids列表。即List<Guid> PermissionIds.

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

我尝试了上述方法,但收到以下错误。 model.PermissionIds在我的模型类中实现如下。

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

错误3

  
    

方法的类型参数&#39; System.Array.ConvertAll(TInput [],System.Converter)&#39;         无法从使用中推断出来。         尝试显式指定类型参数。

  

3 个答案:

答案 0 :(得分:25)

您可以使用Linq的SelectToList方法:

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

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

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

答案 1 :(得分:6)

我不熟悉ConvertAll,但尝试使用Select

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

答案 2 :(得分:3)

  

我有以下代码行,用于创建字符串列表。   我需要将其转换为Guids列表。

如果您的字符串列表可以安全地解析为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的字符串。