I have list of ListRecords
:
InCorrectNumber CorrectNumber Status
---------------------------------------
10101010 7003594558 VALID
20202020 7003310682 VALID
2244448 2222222 INVALID
30303030 6130985705 VALID
3434448 1111111 INVALID
8273648 3333333 INVALID
Using Linq, how do I split the values from ListRecords
list into 2 different lists?
For example:
ValidList1:
InCorrectNumber CorrectNumber
------------------------------
10101010 7003594558
20202020 7003310682
30303030 6130985705
InValidValidList1:
InCorrectNumber CorrectNumber
------------------------------
2244448 2222222
3434448 1111111
8273648 3333333
I have tried as shown here - not sure, it's not working working with good performance
List<accounts> openEvents = ValidList1 .Where(e => e.Status == VALID);
List<accounts> closedEvents = InValidValidList1.Where(e => e.Status == INVALID);
Given these definitions:
public class Account
{
public long IncorrectNumber;
public long CorrectNumber;
public Status Status;
}
public enum Status
{
VALID, INVALID
}
And this data:
List<Account> ListRecords = new List<Account>()
{
new Account { IncorrectNumber = 10101010L, CorrectNumber = 7003594558L, Status = Status.VALID },
new Account { IncorrectNumber = 20202020L, CorrectNumber = 7003310682L, Status = Status.VALID },
new Account { IncorrectNumber = 2244448L, CorrectNumber = 2222222L, Status = Status.INVALID },
new Account { IncorrectNumber = 30303030L, CorrectNumber = 6130985705L, Status = Status.VALID },
new Account { IncorrectNumber = 3434448L, CorrectNumber = 1111111L, Status = Status.INVALID },
new Account { IncorrectNumber = 8273648L, CorrectNumber = 3333333L, Status = Status.INVALID },
};
Then using ToLookup
is the way to go:
var lookup = ListRecords.ToLookup(x => x.Status);
List<Account> openEvents = lookup[Status.VALID].ToList();
List<Account> closedEvents = lookup[Status.INVALID].ToList();
That gives me: