0

ユーザーが新しいデータを挿入したときに、リストに同じデータが既にあるかどうかを確認するために、いくつかのドロップダウンが必要なグリッドがあります。

私のコードはこのようなものです

if(ViewState["_priceSystems"]!=null)
    _priceSystems=ViewState["_priceSystems"] as TList<PriceSystemItems>;

bool _isTrue=
    PriceSystemExist(
        _priceSystemItems.PricePlanId,
        _priceSystemItems.SurchargePlanId,
        _priceSystemItems.NoMatchAltPlanId);

if(_isTrue==false) {
    _priceSystems.Add(_priceSystemItems);
}

ここでは、_priceSystems List<> に値を追加しています。以下のコードでは、値がリストに存在するかどうかを確認しています。

public bool PriceSystemExist(
    int PricePlanId, int SurchagePlanId, int _noPlaneId) {
    bool isExits=false;

    if(ViewState["_priceSystems"]!=null)
        _priceSystems=ViewState["_priceSystems"] as TList<PriceSystemItems>;
    try {
        if(_priceSystems!=null) {
            foreach(PriceSystemItems item in _priceSystems) {
                if(
                    item.PricePlanId==_priceSystemItems.PriceSystemId
                    &&
                    item.ServiceTypeId==_priceSystemItems.ServiceTypeId
                    &&
                    item.NoMatchAltPlanId==_priceSystemItems.NoMatchAltPlanId) {
                    isExits=true;
                }
            }
        }
    }
    catch(Exception ex) {
    }

    return isExits;
}

foreachループ内の値をチェックするために何が間違っているのかわかりません。

4

2 に答える 2

0

比較方法を次のように変更します

   public bool PriceSystemExist(int PricePlanId, int SurchagePlanId, int _noPlaneId)
   {
      bool isExits = false;
      if (ViewState["_priceSystems"] != null)
      _priceSystems = ViewState["_priceSystems"] as TList<PriceSystemItems>;
    try
    {
      if(_priceSystems != null)
      {
          foreach (PriceSystemItems item in _priceSystems)
         {
            if (item.PricePlanId == PricePlanId &&  item.ServiceTypeId == SurchagePlanId && item.NoMatchAltPlanId ==  _noPlaneId)
        {
            isExits = true;
        }
     }
  }

 }
 catch (Exception ex)
 {

 }

 return isExits;
}
于 2013-04-26T14:48:05.147 に答える
0

PriceSystemExist(int PricePlanId, int SurchagePlanId, int _noPlaneId)メソッドでパラメーターを使用していません。

使用する

PricePlanId
SurchagePlanId 
_noPlaneId

それ以外の

_priceSystemItems.PriceSystemId
_priceSystemItems.ServiceTypeId
_priceSystemItems.NoMatchAltPlanId

あなたの条件で。

foreach (PriceSystemItems item in _priceSystems)
{
        if (item.PricePlanId == PricePlanId && 
            item.ServiceTypeId == SurchagePlanId && 
            item.NoMatchAltPlanId == _noPlaneId)
        {
            isExits = true;
        }
 }

また、_ プレフィックスを混在させたくありません。

于 2013-04-26T14:49:47.780 に答える