簡體   English   中英

Linq where子列表包含部分值

[英]Linq where sublist contains a partial value

我想在其子項之一中搜索搜索詞存在的項目

例如,我有一個帶設置的設備,我想要一個所有設備的列表,這些設備具有Id=1的DeviceSetting和value.Contains("test") 我正在使用LINQ to SQL,所以如果可以做任何事情來保持這個快速(並避免投影到POCO)那將是偉大的

我該如何實現這一目標?

Device
{
   List<DeviceSetting> Settings { get; set; }
}

DeviceSetting
{
    int Id;
    string value;
}

var devices = new List<Device>(); // populated from EF

var search = "test";
var results = devices.Where(d => d.Settings.Contains(searchTerm));

使用Enumerable.Any檢查是否有任何設備設置符合某些條件:

var results = 
    devices.Where(d => d.Settings.Any(s => s.value.Contains(searchTerm)));

如果您還需要檢查Id,請將此條件添加到Any的謂詞:

d.Settings.Any(s => s.Id == 1 && s.value.Contains(searchTerm))

注意:如果不將設備保存到列表中,則可以在服務器端執行此過濾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM