gpt4 book ai didi

c# - 在具有字符串列值的数据表中搜索整数项

转载 作者:行者123 更新时间:2023-11-30 17:34:59 24 4
gpt4 key购买 nike

我有一个数据表,其中列的数据类型是字符串。

DataTable dt = new DataTable();
dt.Columns.Add("LowerRange", typeof(string));
dt.Columns.Add("UpperRange", typeof(string));
DataRow dr = dt.NewRow();
dr["LowerRange"] = "1,2,3,4,5";
dr["UpperRange"] = "55";
dt.Rows.Add(dr);

dr = dt.NewRow();
dr["LowerRange"] = "6,7,8,9,10";
dr["UpperRange"] = "66";
dt.Rows.Add(dr);

我有一个整数列表。

List<int> lstEff = new List<int>() { 4,5,6,7 };

在整数列表中的项目中,我想找出列表中有一个或多个匹配项的数据表中的列值。并且必须采用最低的匹配。

在这种情况下,我应该得到对应于“1,2,3,4,5”的行号。

我不能使用 Contains,因为如果行中的值为 55 而我正在搜索 5,它将返回 true。我想使用 linq 进行整数搜索。

我是 linq 的新手。我尝试过类似的操作,但出现错误。

foreach (int i in lstEff)
{
dt.AsEnumerable().Where(c => c.Field<string>("LowerRange").Split(',').ToList<int>().Contains(i.ToString()));
}

最佳答案

String.Split 给你一个字符串列表。您应该将它们的值从字符串转换为整数,然后再进行比较。先转换为列表,然后通过 FindIndex 获取行索引:

var rowNo=
dt.AsEnumerable().ToList().FindIndex(c => c.Field<string>("LowerRange").Split(',').Select(rangeItemStr=>int.Parse(rangeItemStr)).Any(rangeItem=>lstEff.Contains(rangeItem)));

要同时获得行和行索引,我会推荐这样的东西

var rows= dt.AsEnumerable().ToList();
var rowIndex = rows.FindIndex(c => c.Field<string>("LowerRange").Split(',').Select(rangeItemStr=>int.Parse(rangeItemStr)).Any(rangeItem=>lstEff.Contains(rangeItem)));
var row = rows[rowIndex];

关于c# - 在具有字符串列值的数据表中搜索整数项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41722683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com