Linq类型转换

3

有没有更好的方式使用linq将这个guid字符串列表转换为guid:

public static IList<Guid> ToGuidList(this IList<string> guids)
    {
        IList<Guid> guidList = new List<Guid>();
        foreach(var item in guids)
        {
            guidList.Add(new Guid(item));
        }
        return guidList;
    }

我已经查看了:

guids.Cast<Guid>().ToList()

但似乎这并不是解决问题的诀窍。欢迎提供任何建议。

顺便澄清一下 - LINQ 只会执行与您在上面的代码中编写的完全相同的操作... 因此,“更好”的意思只能是“更少的'我的源代码'行数”。它不会更快或不同,但它看起来会更干净。 - Timothy Khouri
该程序相关内容的翻译如下:q 应该是“如何使用 Linq 实现这个功能”。 - Samuel Goldenbaum
3个回答

6
guids.Select(x => new Guid(x)).ToList()

5
guids.Cast<Guid>().ToList()

尝试将列表中的每个元素转换为 Guid。由于无法直接将字符串转换为 Guid,因此此操作失败。

但是,可以很容易地从字符串构造出一个 Guid,您可以使用选择器为列表中的每个元素这样做:

var guidsAsGuid = guids.Select(x => new Guid(x)).ToList()

1
我认为你在 Cast() 调用中漏掉了括号。 - thumbmunkeys

1
你可以使用 .Select 来实现正确的类型转换:
var guids = from stringGuid in dataSource
            select new Guid(stringGuid)

或者

IList<string> guidsAsString = ...
var guids  = guidsAsString.Select(g=>new Guid(g));

3
你觉得WOW太多了吗?它应该是“Guid”,而不是“Guild”;P - leppie
喔,嘻嘻。修好了。不,我从来没玩过魔兽世界。 - Gamlor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接