There should be a simple Linq query for what I'm trying to accomplish, but I'm producing some ugly code.
I have two tables, one of issues and another of issue status. There is a one-to-many relationship between issue and issue status. When an issue is created an IssueStatus is also created with the status field set to "Open" when it is closed, another IssueStatus is created with the status field set to "Closed" ... but issues can be re-opened. It seems like I should be able to write something like this:
public static List<Issue> FindOpenIssues(this IList<Issue> issues) {
return (
from issue in issues
from issueStatus in issue.issueStatus.OrderByDescending(x=>x.CreatedOn).Single()
where issueStatus.Status == "Open"
select issue
).ToList();
}
This obviously fails, but there must be a clean way to do this? Thanks!
Edit: As Reed Copsey points out, my intention is to find current open issues. An issue might contain an element "Open" and at a later date, an element "Closed" ... which is why a simple Where == "Open" won't work, it needs to find the element with the most recent date in the list to determine the status of the issue.