使用linq将逗号分隔的字符串与整数列表匹配,并返回新对象
本文关键字:返回 新对象 对象 列表 linq 分隔 整数 字符串 使用 | 更新日期: 2023-09-27 17:50:14
编辑:我改变了我的输入
List<string>
到a List<int>
。它们现在应该总是有效的整数,而不是empty/null等。
我现在有一个6项列表,这些项都是一致的整数。
我还有一个对象,它包含一个逗号分隔的整数字符串。我正在尝试将输入与此列表相匹配。
例如
输入可以是,1000,2000,3000对象包含1000、2000、3000、4000我希望这个匹配。
如果我的输入是1000,2000,3000,4000,而我的对象只包含1000,2000,3000 ->它应该不匹配。
下面是我当前使用linq to xml创建对象的代码。"TaxUnitIdList"是逗号分隔的字符串。(这是当我的输入是字符串时)var obj = (from tug in tugElem.Descendants("CodeData")
select new TaxUnitGroups
{
Code = (string)tug.Attribute("code"),
CodeID = (string)tug.Attribute("codeid"),
Desc = (string)tug.Attribute("desc"),
TaxUnitIdList = (string)tug.Attribute("taxunits")
});
我在想下面的东西或一个连接(我无法工作),这是失败的,因为我想要一个布尔值(这是有意义的)
var matchedTugs = (from tug in tugElem.Descendants("CodeData")
let TaxUnitIdList = (string)tug.Attribute("taxunits")
let taxArr = TaxUnitIdList.Split(',').Select(int.Parse)
where taxArr.Contains(inputTaxUnits.All()) //This is where I screw up
select new TaxUnitGroups
{
Code = (string)tug.Attribute("code"),
CodeID = (string)tug.Attribute("codeid"),
Desc = (string)tug.Attribute("desc"),
TaxUnitIdList = (string)tug.Attribute("taxunits")
}).ToList();
在Where子句中试试:
TaxUnitIdList.Split(',')
.Select(s => int.Parse(s))
.Except(inputTaxUnits.Where(s=>int.TryParse(s, out tempInteger))
.Select(s=>int.Parse(s)))
.Any();
基本上,我们要将TaxUnitId
列表转换为整数数组,将输入列表转换为良好的 (tryparse)输入数组,查找差异并验证结果为0。