2

私はこれらのクラスを持っています。簡単にするために、質問に関係のないメンバーは除外しました。WWPN の特定の文字列値を持つメンバーを含むすべてのゾーンを検索したいと考えています。以下の LINQ は機能しますが、一致しないゾーンの結果には null も含まれます。私の他の試みでは、ゾーンメンバー自体またはブール値が得られました。null値を取得せずにこれを行う方法はありますか? ContainsMemberWWPN() クラス メンバーを使用する必要はありません。

  public class Zone
     {  ....
      public List<ZoneMember> MembersList = new List<ZoneMember>();
     }

  public class ZoneMember
   {
    private string _WWPN = string.Empty;
    public string MemberWWPN {get{return _WWPN;} set{_WWPN = value; } }
    private bool _IsLoggedIn;
    public bool IsLoggedIn { get { return _IsLoggedIn; } set { _IsLoggedIn = value; } }

    }

 public class CiscoVSAN
    {
      ....
    public List<Zone> ActiveZoneset = new List<Zone>(); 
            ....
    }

public Zone ContainsMemberWWPN(string wwpn)
    { 
      var contained = 
          this.MembersList.FirstOrDefault(m => m.MemberWWPN.Contains(wwpn));

      if (contained != null) { return this }
      else { return null; }

    }

//find all the zones that contain the input string
// this returns the zones that match
// but selection3 also has null values for zones that don't match
var selection3 = VSANDictionary.SelectMany(vsan => vsan.Value.ActiveZoneset.ZoneList).Select(z => z.ContainsMemberWWPN(zonemember));
4

1 に答える 1

3

nullアイテムを除外します。

var selection3 = VSANDictionary
                 .SelectMany(vsan => vsan.Value.ActiveZoneset.ZoneList)
                 .Select(z => z.ContainsMemberWWPN(zonemember))
                 .Where(m=> m != null)
于 2012-08-23T16:28:49.113 に答える