1

私はこれらのクラスを持っています:

public class ZoneMember
    // a zone member is a member of a zone
    // zonemembers have ports, WWPNs, aliases or all 3
{
    private string _Alias = string.Empty;
    public string MemberAlias {get{return _Alias;} set{_Alias = value; } }
    private FCPort _Port = null;
    public FCPort MemberPort { get { return _Port; } set { _Port = value; } }
    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; } }
    private string _FCID;
    public string FCID {get{return _FCID;} set{ _FCID=value; } }
}

public class Zone
{ 
    public List<ZoneMember> MembersList = new List<ZoneMember>();
    private string _ZoneName;
    public string zoneName{ get{return _ZoneName;}  set{_ZoneName=value;} }

    public Zone(string n) { zoneName=n; }

}

public class ZoneSet 
{    
    private string _ZoneSetName;
    private int _VSANNum;
    public string ZoneSetName{get{ return _ZoneSetName;}  set{_ZoneSetName=value;} }
    public int VSANNum{ get{ return _VSANNum;}  set{_VSANNum=value;} }
    public bool isActive;
    public List<Zone> ZoneList = new List<Zone>();
}

MembersListのプロパティに特定の値を持つゾーンメンバーを持つZoneset内のすべてのゾーンを検索したいと思います。

私はこのようなものが機能することを知っています-この場合、私はWWPNプロパティを検索しています:

// assumes myZoneSet has already been instantiated ad has zones in it
// and inputWWPN in the select statement has the value we want

List<Zone> myZoneList = new List<Zone>();

foreach (Zone z in myZoneset)
{   
var zm=null;

        zm = from member in z.MembersList where member.MemberWWPN == inputWWPN select member;  
  // if we find a matching member, add this zone to the list 
  if (zm != null)
   {  myZoneList.Add(z);
    }
}

LINQを使用してすべてを実行する方法はありますか?データベース用語での用語が何であるかわかりません。

4

3 に答える 3

3

この小さなクエリで十分です。

var myZoneList = myZoneSet.ZoneList
    .Where(z => z.Any(member => member.MemberWWPN == inputWWPN))
    .ToList();
于 2012-07-27T13:38:13.170 に答える
1

これを試して -

List<Zone> listOfZone = zoneSet.ZoneList.Where(e => e.Any(p => p.MemberWWPN == inputWWPN)).ToList();
于 2012-07-27T13:43:42.623 に答える
0
 myZoneList =myZoneSet.SelectMany(z => z.MembersList).Where(m => m.MemberWWPN == "somestring").ToList();

これがお役に立てば幸いです。

于 2012-07-27T13:49:30.270 に答える