2010-01-19 75 views
3

我有2個對象包含泛型列表屬性。 IE:C#LINQ對象子查詢/在

public class User 
{ 
    public string Sid { get; set; } 
    public List<Group> Groups { get; set; } 
} 

public class Section 
{ 
    public string Sid { get; set; } 
    public List<Group> Groups { get; set; } 
} 

從我BLL我得到部分的泛型列表 列表mySections = SectionDB.getList();

和我的用戶對象包含用戶信息 用戶MYUSER = UserDB.getInfo(SID);

使用LINQ to對象,則有可能使該retreives所有的部分,其中在該組的用戶類中的至少一組查詢?

任何幫助?

回答

2
from section in mySections 
from sectionGroup in section.Groups 
where myUser.Groups.Any(userGroup => userGroup == sectionGroup) 
select section 

我寧願去任何,因爲您使用迭代器更有效地

+0

我感謝你......好像還好.. – Stan92 2010-01-19 12:23:03

+0

只要你工作在完全相同的參考上......就像marc說的......否則你可以包括一個Func 在你的.Any() - 調用來獲得例如。檢查ID。請參閱http://msdn.microsoft.com/en-us/library/system.linq.enumerable.any.aspx – 2010-01-19 12:26:27

+0

我有點好奇如何使用Mark的方法使用Func Stan92 2010-01-19 14:23:05

2
var sections = mySections.Where(x => x.Groups.Intersect(myUser.Groups) 
    .Any()).ToList(); 

(注意,這依賴於Group實例的任何引用平等,或適當Equals/GetHashCode執行Group類型)

+0

@Marc:我總是從你學到一些東西。直到今天,我從未注意到'無參數'Any'方法:) – leppie 2010-01-19 12:43:00