如何将字符串列表转换为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.
您可以使用Linq的Select
和ToList
方法:
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();