Linq铸造类型之间

时间:2010-02-24 11:03:06

标签: linq linq-to-objects

有没有更好的方法使用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()

但这似乎不是诀窍。

任何提示赞赏。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

只是尝试将列表的每个元素强制转换为Guid。由于您无法直接将字符串转换为Guid,因此会失败。

但是,从字符串构造Guid很容易,您可以使用选择器为列表中的每个元素执行此操作:

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

答案 2 :(得分:1)

你可以使用.Select来实现正确的演员:

var guids = from stringGuid in dataSource
            select new Guid(stringGuid)

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