問題: Linqでこれを書き直そうとしています:
listOfUsersForReviewerはIEnumerable<User>
int countOfGreenUsers = 0;
foreach (var user in listOfUsersForReviewer)
{
var u = (from reviewitems in context.ReviewItems
join groupaccountlinks in context.GroupAccountLinks on reviewitems.GroupAccountID equals groupaccountlinks.GroupAccountID
join reviews in context.Reviews on reviewitems.ReviewID equals reviews.ReviewID
join applications in context.Applications on reviews.ApplicationID equals applications.ApplicationID
join reviewers in context.Reviewers on applications.ResponsibleReviewerID equals reviewers.ReviewerID
join accounts in context.Accounts on groupaccountlinks.AccountID equals accounts.AccountID
join users in context.RBSUsers on accounts.UserID equals users.UserID
where
users.UserID == user.UserID &&
reviewers.FullyQualifiedLogin == fullyQualifiedLogin &&
reviews.ReviewStatusID == (byte)Enums.ReviewStatus.InProgress &&
reviewitems.ReviewItemStatusID == (byte)Enums.ReviewItemStatus.Unapproved
select reviewitems);
byte colour = (byte)Enums.UserStatusColour.Red;
if (u.Count() == 0)
{
colour = (byte)Enums.UserStatusColour.Green;
countOfGreenUsers++;
}
}
匿名型を作成しようとしましたが、これはコンパイルされません。
// select number of green users
var x = from user in listOfUsersForReviewer
from reviewitems in context.ReviewItems
join groupaccountlinks in context.GroupAccountLinks on reviewitems.GroupAccountID equals
groupaccountlinks.GroupAccountID
join reviews in context.Reviews on reviewitems.ReviewID equals reviews.ReviewID
join applications in context.Applications on reviews.ApplicationID equals applications.ApplicationID
join reviewers in context.Reviewers on applications.ResponsibleReviewerID equals
reviewers.ReviewerID
join accounts in context.Accounts on groupaccountlinks.AccountID equals accounts.AccountID
join users in context.RBSUsers on accounts.UserID equals users.UserID
where
users.UserID == user.UserID &&
reviewers.FullyQualifiedLogin == fullyQualifiedLogin &&
reviews.ReviewStatusID == (byte)Enums.ReviewStatus.InProgress &&
reviewitems.ReviewItemStatusID == (byte)Enums.ReviewItemStatus.Unapproved
select new
{
UserID = user.UserID,
CountOfGreen = reviewitems.Count()
};