繁体   English   中英

使用linq将逗号分隔的字符串与整数列表匹配,然后返回新对象

[英]Match a comma delimited string to an integer list using linq and return the new objects

编辑:我改变了我的输入

List<string>

List<int> 现在,它们应该始终是有效的整数,不能为空/空等。

我目前有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列表转换为整数数组, TaxUnitId输入列表也转换为良好的 (tryparse)输入数组,找出差值并验证结果是否为0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM