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

imm*_*rza 10 c#

我有以下代码行创建一个字符串列表.

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

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

model.PermissionIds= Array.ConvertAll(tstIdss , x => Guid.Parse(x));
Run Code Online (Sandbox Code Playgroud)

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

public List<Guid> PermissionIds { get; set; }
Run Code Online (Sandbox Code Playgroud)

错误3

无法从用法中推断出方法'System.Array.ConvertAll(TInput [],System.Converter)'的类型参数.尝试显式指定类型参数.

Tho*_*que 28

您可以使用Linq SelectToList方法:

model.PermissionIds = tstIdss.Select(Guid.Parse).ToList();
Run Code Online (Sandbox Code Playgroud)

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

model.PermissionIds = tstIdss.ConvertAll(Guid.Parse);
Run Code Online (Sandbox Code Playgroud)


小智 10

我有以下代码行创建字符串列表。我需要将其转换为指南列表。

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

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

Guid bucket = Guid.Empty;
model.PermissionIds = tstIdss.Where(x => Guid.TryParse(x, out bucket)).Select(x => bucket).ToList();
Run Code Online (Sandbox Code Playgroud)

Where 子句将过滤掉任何无法格式化为 Guid 的字符串。


TJ *_*lis 7

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

model.PermissionIds = tstIdss.Select(s=>Guid.Parse(s)).ToList();
Run Code Online (Sandbox Code Playgroud)