繁体   English   中英

如何在LINQ中使用可为空的内置变量?

[英]How to use nullable built-in variables in LINQ?

我是LINQ的新手,在这里我对此有疑问。

我这里有一个非常简单的类,用于演示:

public class CurrencyPair
{
    public string? cultureCode;
    public string? currencyName;

    public CurrencyPair(string iCultureCode, string iCurrencyName)
    {
        cultureCode = iCultureCode;
        currencyName = iCurrencyName;
    }

    public CurrencyPair()
    {
        cultureCode = "";
        currencyName = "";
    }
}

然后我有一个以上类的实例列表:

static List<CurrencyPair> currencyPairs;

现在,我正在尝试这样做:

public List<string> GetCurrencyNames()
{
    return (from c in currencyPairs select c.currencyName).Distinct().ToList();
}

但是我得到这个错误:

The type 'string' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable<T>'

如果我删除? 对于类定义中的cultureCodecurrencyName ,此错误消失了。

那么,如何在LINQ查询中使用可为空的字符串呢?

string已经是一个引用类型 ,它可以容纳null ,您不必使用string?

该错误也表明:

类型“字符串”必须是非空值类型。

您只能将Nullable<T>与值类型一起使用。

Nullable<T>

表示可以分配为null 的值类型

您正在尝试使用string?声明字段string? 它等于Nullable<string> ,但这只能使用value类型完成。

在C#和Visual Basic中,使用?将值类型标记为可为空。 值类型后的符号。 例如int? 用C#还是Integer? 在Visual Basic中声明一个可以分配为null的整数值类型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM