У меня есть два списка, состоящих из разных сложных объектов, и каждый из них состоит из 2 отдельных источников данных.Один список может содержать или не содержать записи.Когда какие-либо записи существуют в «необязательном» списке, мне нужно, чтобы «обычный» список подвергался дальнейшей фильтрации.
К сожалению, я могу найти только очень простые примеры здесь и в Интернете, поэтому я задаю этот вопрос.
Псевдологика выглядит так: Когда существует QuickFindMaterial
записей, получите все DataSource
записей, где query.Name
находится в коллекции QuickFindMaterial.Material
.Если нет записей QuickFindMaterial
, это не влияет на конечный результат.Наконец, выберите все отдельные записи DataSource
.
Классы выглядят так:
public class QuickFindMaterial
{
public string SiteId { get; set; }
public string Material { get; set; }
}
Код выглядит так: Я прокомментировал мою неудачную WHERE
логику ниже
var dataSource = DocumentCollectionService.ListQuickFind();
var quickFindMaterial = ListMaterialBySiteID(customerSiteId);
var distinct = (from query in dataSource
select new
{
ID = query.DocumentID,
Library = query.DocumentLibrary,
ModifiedDate = query.DocumentModifiedDate,
Name = query.DocumentName,
Title = query.DocumentTitle,
Type = query.DocumentType,
Url = query.DocumentUrl,
})
//.Where(x => x.Name.Contains(quickFindMaterial.SelectMany(q => q.Material)))
//.Where(x => quickFindMaterial.Contains(x.Name))
.Distinct();