我在使用以下代码的 LINQ
查询中遇到此错误:
"Operator '??' cannot be applied to operands of type 'System.Guid?' and 'string'"
我有一个可空的GUID对象
,这里我检查GUID对象
是否为null
,然后我需要返回
String.Empty
否则会将 GUID
转换为 string
List<Report> queryresult =
reportDatatable.AsEnumerable()
.Where(c => c.Field<Guid?>("ParentID") == Guid.Parse("XXXXXX-XXX-XXXXX-XXXXX-XXX))
.Select(c=> new Report()
{
ID = (c.Field<Guid?>("ID") ?? String.Empty).ToString(), //error here
...
}).ToList();
下面的链接是检查 object
是否为 null
的最简单方法。
建议检查 GUID 对象
是否为 null
的任何其他方法
最佳答案
编辑:
显然,最适合您需要的是:
ID = (c.Field<Guid?>("ID") ?? Guid.Empty) == Guid.Empty ? String.Empty : c.Field<Guid?>("ID").ToString(), //try this
原创
将您的 GUID 转换为 string
第一:
c.Field<Guid?>("ID").ToString() ?? String.Empty
那么应该就可以了。
否则,使用 Guid.Empty
而不是 String.Empty
这里的想法是双方都在??
必须匹配。喜欢比较Apple
至 Apple
防止c.Field<Guid?>("ID") == null
正在执行,在 C#6 中,您可以像这样使其更简单
c.Field<Guid?>("ID")?.ToString() ?? String.Empty
关于c# - 运算符 '??' 不能应用于类型 'System.Guid?' 和 'string' 的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078324/