我在過濾嵌套在更大列表中的字符串列表時遇到問題。我嘗試過這樣的事情:myList.FindAll(d => d.activities.Any(i => i.type.Contains("read")));但似乎有人正在回歸我有一個“UserData”結構,如圖所示:public class UserData{ public int id; public List<UserActivity> activities;}public class UserActivity{ public string activity; public string type;}有f.ex。兩種類型的活動(“讀”和“寫”)我想做的是過濾給定的內容,List<UserData> myList如圖所示List<UserData> newList = new List<UserData>();foreach(UserData d in myList){ UserData newD = new UserData(); newD.id = d.id; newD.activities= d.activities.FindAll(i =>i.type.Contains("read")); if (newD.activities.Any()) newList.Add(newD);}有沒有辦法用 Linq 查詢巧妙地做到這一點?我想要弄清楚的是一個簡短而整潔的 Linq 查詢來過濾我所描述的嵌套列表......我知道這可能是一個裝飾問題,但它仍然讓我很困擾。
3 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
var newList = (from userData in myList
let newActivities = userData.activities.Where(i => i.type.Contains("read"))
where newActivities.Any()
select new UserData { id = userData.id, activities = newActivities.ToList() }).ToList();

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
我通過使用解決了這個問題:
newList = myList.Where(d => d.activities.Any(act => act.type.Contains("read"))) .Select(d => new UserData { id = d.id, activities = new List<UserActivity>( d.activities.FindAll(act => act.type.Contains("read")) ) }) .ToList();

慕尼黑8549860
TA貢獻1818條經驗 獲得超11個贊
嘗試以下操作:
List<UserData> newList = myList.Select(x => new UserData() { id = x.id, activities = x.activities.Where(y => y.type.Contains("read")).ToList() }) .Where(x => x.activities.Count > 0) .ToList();
- 3 回答
- 0 關注
- 160 瀏覽
添加回答
舉報
0/150
提交
取消