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?ます。はそうではないので、それは意味int? がありませんCheckedNumber-それList<Fruit>は、に車が含まれているかどうかを尋ねるようなものです。

一部またはCheckedNumber構造体がである場合は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 に答える