如何在 IList 上使用 Linq,根据某些条件比较列表中存在的第一个值和第二个值
本文关键字:列表 比较 条件 存在 第二个 第一个 IList Linq | 更新日期: 2023-09-27 18:35:45
我面临的问题是,我想检查 Ilist 值的两个条件,我想从 Ilist 中获取第一个值。
例如:ilist元素包含以下值:
"[Name]","m","1","abcd"
和元素1康那丁
"[Reset]","1.5".
我想检查第一个元素是否有方括号,第二个元素不是"M"或"MD",
PFB 我尝试过的代码,但显然 key+1 不起作用。
element.Cast<Object>().Where(key=>((Convert.ToString(key).StartsWith("[")
&& Convert.ToString(key).EndsWith("]"))
&&(!((Convert.ToString(key+1).Contains("MD")
||(Convert.ToString(key+1).Contains("M"))))))
任何指示都受到高度赞赏。
根据您的注释,您可以循环访问大列表,然后如上所述使用索引器。
var rez= from p in BigList
where p.Count() >1 && (p[0].StartsWith("[") && !p[1].Equals("M") && !p[1].Equals("MD"))
select p;
这将返回所有具有 2 个以上元素的列表并满足您的要求
这是您要实现的目标吗---即仅从匹配列表中获取第一项?
from x in new List<List<string>> { new List<string> { "[Name]", "m", "1", "abcd" }, new List<string> { "[Reset]","1.5" } }
where x.Count > 1 && Regex.IsMatch(x[0], @"^'[.*']$") && !x[1].Equals("M", StringComparison.InvariantCultureIgnoreCase) && !x[1].Equals("MD", StringComparison.InvariantCultureIgnoreCase)
select x[0]