我的项目中有以下代码
var ReturnStr = Final_BOM.Tables[0].Rows[0]["NEW_BOM_IDS"].ToString();
上面的行返回“12,13”但有时只返回“12”
var ReturnBOM = dsBOMDEfault.Tables[0].Rows[0]["Item_ID"].ToString();
上述行返回“14,15,13”。
我想检查ReturnStr中的ReturnBOM值
任何人都可以帮助检查
答案 0 :(得分:2)
您可以使用intersect:
这里有一个快速的单行:
var results = ReturnStr.Split(',').Select(int.Parse)
.Intersect(ReturnBOM.Split(',').Select(int.Parse))
Demo:
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var ReturnStr = "12,13";
var ReturnBOM = "14,15,13";
// Convert string to array with Split(',')
// if you dont want int just remove `.Select(int.Parse)`
var ReturnStrElements = ReturnStr.Split(',').Select(int.Parse);
var ReturnBOMElements = ReturnBOM.Split(',').Select(int.Parse);
// Keep only common elements
var results = ReturnStrElements.Intersect(ReturnBOMElements);
foreach(var item in results)
{
Console.WriteLine(item);
}
}
}
Split()
将字符串转换为分隔符为',' Select(int.Parse)
将每个元素从字符串转换为int。Intersect()
仅保留常用元素答案 1 :(得分:1)
如果我理解权利:
string[] returnBomVals = ReturnBom.Split(',');
string[] returnStrVals = ReturnStr.Split(',');
foreach (var vals in returnStrVals)
{
foreach (var strVals in returnBomVals)
{
if (ReturnStr.Equals(vals))
{
//Do Actions
}
}
}
答案 2 :(得分:1)
使用LINQ。
using System.Linq;
下面的代码将为您提供一个IEnumerable of String,其中包含您要查找的值。
var inBoth = ReturnStr.Split(',').Intersect(ReturnBOM.Split(','))
然后,您可以遍历这些值,将它们转换为Int32或执行您想要的任何操作。