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

本文关键字:内置 变量 LINQ | 更新日期: 2023-09-27 18:08:50

我是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查询中使用可空字符串…div ?

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

错误提示:

类型'string'必须是一个非空值类型....

值类型只能使用Nullable<T>

Nullable<T>

表示一个可以赋值为null的值类型

你正试图用string?声明字段,这等于Nullable<string>,但这只能用值类型完成。

在c#和Visual Basic中,可以使用? 值类型后面的符号。例如,int?c#还是Integer?在Visual Basic中声明了一个可赋值的整数值类型空

.

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