0

我有一个名为CheckedNumber. 此类型用于属性:

`public IList<CheckedNumber> CheckedNumbers { get { return this._checkedNumbers; } }` 

...保留数字列表。

我有另一个财产:

`public int? TheNumber { get { return this._theNumber; } }`

...并想检查其值是否存在于CheckedNumbers列表中。

这个:

if (this.CheckedNumbers.Contains(this.TheNumber)) { //... }

给出错误:

Argument 1: cannot convert from 'int?' to 'ProjectName.Models.CheckedNumber'

我怎么能转换int?到我的结构类型?

4

2 回答 2

1

好的,现在问题稍微清楚了一些 - 但从根本上说,您是在询问CheckedNumber值列表是否包含特定int?值。这是没有意义的,因为 aint? 不是a CheckedNumber- 这就像询问 a 是否List<Fruit>包含汽车。

如果part或您的CheckedNumberstruct 是int?,您可能需要:

if (CheckedNumbers.Any(x => x.SomeProperty == TheNumber))

或者,您可能想要:

if (CheckedNumbers.Contains(new CheckedNumber(TheNumber)))

否则,您将不得不进一步澄清问题。

于 2012-11-22T16:38:03.187 回答
0

CheckedNumber实施IEquatable<CheckedNumber>。然后Contains,您的列表方法可以使用此方法查找列表项。

public struct CheckedNumber : IEquatable<CheckedNumber>
{
    public CheckedNumber(int? number)
    {
        _value = number;
    }

    private int? _value;
    public int? Value { get { return _value; } }

    public bool Equals(CheckedNumber other)
    {
        return _value == other._value;
    }
}

现在您可以通过int?CheckedNumber

if (this.CheckedNumbers.Contains(new CheckedNumber(this.TheNumber))) {
    //...
}
于 2012-11-22T16:50:06.697 回答