簡體   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