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

本文关键字:列表 转换 guid 字符串 | 更新日期: 2023-09-27 18:00:06

我有下面一行代码,它创建了一个字符串列表。

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在我的模型类中实现如下。

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

错误3

>>The type arguments for method 'System.Array.ConvertAll<TInput,TOutput>(TInput[], System.Converter<TInput,TOutput>)' 
    cannot be inferred from the usage. 
    Try specifying the type arguments explicitly.   

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

您可以使用Linq的SelectToList方法:

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

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

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

我有下面的代码行,它创建了一个字符串列表。我需要将其转换为Guid列表。

如果你的字符串列表可以安全地解析为Guid,我推荐@Thomas Leveque的答案。

如果您的字符串列表可能包含一些非guid,则使用TryParse更安全,如下所示:

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

Where子句将筛选出任何不能格式化为Guid的字符串。

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

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