Linq литья между типами - PullRequest
       19

Linq литья между типами

3 голосов
/ 24 февраля 2010

Есть ли лучший способ привести этот список строк guid к guids, используя linq:

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 ]

6 голосов
/ 24 февраля 2010
guids.Select(x => new Guid(x)).ToList()
5 голосов
/ 24 февраля 2010
guids.Cast<Guid>().ToList()

Просто пытается привести каждый элемент списка к Guid. Поскольку вы не можете напрямую привести строку к Guid, это не удастся.

Тем не менее, легко создать Guid из строки, вы можете сделать это для каждого элемента в списке, используя селектор:

var guidsAsGuid = guids.Select(x => new Guid(x)).ToList()
1 голос
/ 24 февраля 2010

Вы можете просто использовать .Select для реализации правильного приведения:

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

или

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