c# - 将 C# 代码转换为 LINQ C# 但列出添加相同项目
问题描述
程序员,我正在尝试过滤列表。我使用了 foreach 循环,它工作正常,但是当我将它转换为 LINQ 时,它不能正常工作,因为过滤后的列表正在添加相同的项目,而我需要根据我的条件从另一个列表中选择不同的项目。我用循环做了以下代码,它工作正常并向我展示了结果。
foreach (var item in lists)
{
if (item.Items.Count > 0)
{
foreach (var newitem in item.Items)
{
foreach (var assulkeylist in list)
{
if (newitem.Href.Contains(assulkeylist.ApplicationKey))
{
if (!filteredlist.Contains(newitem))
{
filteredlist.Add(newitem);
}
}
}
}
}
}
在这里,我用LINQ C#做了什么。但它向我展示了12 个项目,并且所有项目都具有相同的名称:
我用下面给出的 LINQ 做了什么代码不知道我面临的问题是什么。
List<ListItem> filteredlist = new List<ListItem>();
filteredlist = (from ListItem item in lists
where item.Items.Count > 0
from newitem in item.Items
from assulkeylist in list
where newitem.Href.Contains(assulkeylist.ApplicationKey)
where !filteredlist.Contains(newitem)
select newitem).ToList();
解决方案
我认为这是你需要的:
List<ListItem> filteredlist =
(
from item in lists
from newitem in item.Items
where list.Any(l => newitem.Href.Contains(l.ApplicationKey))
select newitem
).ToList();
您只newitem
在获得第一个newitem.Href.Contains(assulkeylist.ApplicationKey)
匹配项时添加第一个,因此可以将整个foreach (var assulkeylist in list) ...
替换为.Any(...)
.
推荐阅读
- python - isinstance 无法按预期使用字符串枚举
- linux - 来自不同源文件的bash中的变量替换
- python-3.x - 将大文件中的 IP 地址提取成 100 个组并放入二维数组中
- curl - 正确的语法 cURL --capath
- java - 线程“主”java.lang.NullPointerException 中的异常 - 在客户端。
(Client.java:64) 在 Client.main(Client.java:105) - javascript - 在 vue.js 中发布到烧瓶 API 时“被 CORS 策略阻止”
- hdl - 我正在尝试创建一个 8 位移位寄存器,但不太确定哪里出错了
- javascript - 对象检测(coco-ssd)Node.js:错误:传递给 tf.browser.fromPixels() 的像素必须是 HTMLVideoElement
- python - Python将元素附加到带有用户输入的二维数组
- python - PyInstaller .exe 运行后故障