LINQ: حالة في الجدول وفي الجدول ذات الصلة
-
06-09-2019 - |
سؤال
لدي بعض العناصر التي تسمى معلق والتي يمكن إنشاؤها والاشتراك في. عندما يتم إنشاؤها، يكون لديهم نطاق 1: خاص أو 2: الجمهور. يمكن الاشتراك في المؤشرات العامة من قبل أي شخص ويمكن الاشتراك في معتمد من قبل دعوة المالك.
أريد استخدام LinQ للحصول على المؤشرات التي تم إنشاؤها بواسطة مستخدم (أي: مع معرف مالك معين) والتي تم الاشتراك في [1] عام [2] على المستخدم الحالي.
TickerUser Ticker
========== ======
TickerUserId <-- TickerId
TickerId OwnerId
UserId ScopeId
public IQueryable<Ticker> GetTickersByOwnerAll(int ownerId) {
return from ticker in db.Tickers
where ticker.OwnerId == ownerId
select ticker;
}
/// THIS PART IS INCORRECT -- DO NOT USE
public IQueryable<Ticker> GetTickersByOwnerVisible(int ownerId) {
int currId = CurrentUser.GetCurrentUser().ID;
return GetTickersAll(ownerId)
.Where(t => t.ScopeId == 2)
.Where(t => t.TickerUsers.Where(tu => tu.UserId == currId));
}
هذا السطر الأخير غير صحيح ولكن يمكنك معرفة المكان الذي كنت أحاول الذهاب إليه. أنا جديد جدا على LINQ لذلك لا أفكر في الأمر بالطريقة الصحيحة حتى الآن. هل أنا على خطأ؟
المحلول
db.Tickers.Where(t =>
// The ticker is public...
(t.ScopeId == 2)
// ...or any of the ticker users is the current user.
|| t.TickerUsers.Any(tu => tu.UserId == currId))
لا تنتمي إلى StackOverflow