Sunday, February 15, 2009

LINQ Not In Query (Process[]).Contains does not work



Process[] psBeforeLogin = Process.GetProcessesByName("MxOrderGenerator");

MXXOMLib.MxEnumReturnCode ret = _MxgXOM.Login(TraderName, TraderPassword, XIPDBServer, "GMO_INTRADAY", MXXOMLib.MxEnumEncryptionMethod.MxeEncryptionMethodNone);
Process[] psAfterLogin = Process.GetProcessesByName("MxOrderGenerator");

var p = from rA in psAfterLogin
where !(from rB in psBeforeLogin select rB).Contains(rA)
select rA;
Console.WriteLine(p.Count());
count =2 always, it should be one.

As it turns out, cannot use Process in select. Can use ProcessID.

var p = from rA in psAfterLogin
where !(from rB in psBeforeLogin select rB.Id).Contains(rA.Id)
select rA;

No comments: