1

我是一个非常新的 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>'

如果我在类定义中删除?forcultureCodecurrencyName,这个错误就会消失。

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

4

1 回答 1

8

string已经是引用类型了,可以hold null,不用用string?

该错误也表明:

“字符串”类型必须是不可为空的值类型......

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

Nullable<T>

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

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

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

.

于 2013-04-11T10:39:37.993 回答