如何转换guid?指导

时间:2011-03-31 10:38:04

标签: c#-4.0

如何将可空的guid转换为guid?我的目的是将可以为空的Guid列表转换为guid列表。我怎么能这样做?

6 个答案:

答案 0 :(得分:24)

使用??运算符:

public static class Extension
{
   public static Guid ToGuid(this Guid? source)
   {
       return source ?? Guid.Empty;
   }

   // more general implementation 
   public static T ValueOrDefault<T>(this Nullable<T> source) where T : struct
   {
       return source ?? default(T);
   }
}

你可以这样做:

Guid? x = null;
var g1 = x.ToGuid(); // same as var g1 = x ?? Guid.Empty;
var g2 = x.ValueOrDefault(); // use more general approach

如果您有一个列表并希望过滤掉空值,您可以写:

var list = new Guid?[] {
  Guid.NewGuid(),
  null,
  Guid.NewGuid()
};

var result = list
             .Where(x => x.HasValue) // comment this line if you want the nulls in the result
             .Select(x => x.ValueOrDefault())
             .ToList();

Console.WriteLine(string.Join(", ", result));

答案 1 :(得分:9)

Nullable<T>.value属性?

答案 2 :(得分:9)

使用此:

List<Guid?> listOfNullableGuids = ...
List<Guid> result = listOfNullableGuids.Select(g => g ?? Guid.Empty).ToList();

这是最简单的方法。对于那些简单的东西,不需要扩展方法......

答案 3 :(得分:1)

type?Nullable<type>的缩写。请参阅the documentation for Nullable

答案 4 :(得分:1)

new Guid(yourGUID.ToString())

还有可能的解决方案。

答案 5 :(得分:-1)

是“ id”是“向导”吗?

Guid.Parse(id.ToString())

获取Guid null并通过将Guid null转换为String来创建Guid