我有2個班LINQ的過濾器的IEnumerable對另一個IEnumerable的
public class ClassA
{
public int Id { get; set; }
public string Name { get; set; }
}
而且
public class ClassB
{
public int Id { get; set; }
public string Name { get; set; }
public ClassA ClassA { get; set; }
}
我想篩選ClassB的列表A類
void Main()
{
var ListA = new List<ClassA>();
var a1 = new ClassA() {Id=1, Name = "A1"};
var a2 = new ClassA() {Id=2, Name = "A2"};
var a3 = new ClassA() {Id=3, Name = "A3"};
ListA.Add(a1);
ListA.Add(a2);
ListA.Add(a3);
var FilterListA = new List<ClassA>();
FilterListA.Add(a1);
FilterListA.Add(a2);
var ListB = new List<ClassB>();
var b1 = new ClassB() {Id=1, Name="B1" ,ClassA= a1};
var b2 = new ClassB() {Id=1, Name="B1", ClassA= a2};
var b3 = new ClassB() {Id=1, Name="B1", ClassA= a3};
var b4 = new ClassB() {Id=1, Name="B1", ClassA= a3};
ListB.Add(b1);
ListB.Add(b2);
ListB.Add(b3);
ListB.Add(b4);
的列表它的作品,如果我使用
var query = from b in ListB
join a in FilterListA
on b.ClassA equals a
select new { Name = b.Name, ClassAName = a.Name };
Console.WriteLine(query.ToList());
但我願做這樣的事情......但我不知道
Console.WriteLine(ListB.Where(o => o.ClassA IsIncluded In FilterListA));
}
我嘗試使用是如何包含沒有成功。感謝
但你'Join'方法比你想要的'Where'與含有(或'Any')更有效。 http://stackoverflow.com/questions/5551264/why-is-linq-join-so-much-faster-than-linking-with-where –
這正是我想弄明白的。加盟非常快,我必須說。我想我想知道做同樣事情的不同方式,即使它花費我幾個名譽點。 – SerenityNow
20,000,000次迭代的包含約需要22秒..使用連接需要41秒....任何需要43秒。所以我想包含更快...... – SerenityNow