我有以下代码行,用于创建字符串列表。
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; 无法从使用中推断出来。 尝试显式指定类型参数。
答案 0 :(得分:25)
您可以使用Linq的Select
和ToList
方法:
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的字符串。