[英]Linq Intersect Comma Delimited String with List Containing Strings using Iqueriable
[英]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.