如何在LINQ中的一對多關係表中進行過濾?

entity-framework-core linq

我有EVENTS和CATEGORY表。一個事件可能有多個類別關聯。所以它是一對多的。

當我嘗試過濾CATEGORY表時,我收到錯誤ArgumentException:屬性表達式i => i.Category.CategoryName.Contains("Social")無效。表達式應表示屬性訪問: t => t.MyProperty 。有關包含相關數據的更多信息,請參閱加載相關數據

這是我的代碼

   var viewModel = new EventIndexData();
            viewModel.Events = await _context.Events
                                 .Include(i => i.Categories)
                                    .ThenInclude(i => i.Category.CategoryName.Contains("Social"))
                                    .AsNoTracking()
                                 .ToListAsync();

任何幫助讚賞!

熱門答案

首先需要創建一個查詢並附加條件:

var categoryName = "Social";

var query = _context.Events.Include(i => i.Category);

if (String.IsNullOrEmpty(categoryName))
{
    query = query.Where(item => item.Category.CategoryName.Contains(categoryName));
}

var viewModel = new EventIndexData();

viewModel.Events = await query.ToListAsync();

我不確定您的對象名稱,但您可以修復代碼。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow