使用c#检查字符串中的字符串值

时间:2017-10-12 11:18:12

标签: c#

我的项目中有以下代码

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值

任何人都可以帮助检查

3 个答案:

答案 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或执行您想要的任何操作。