怎么判断数组里每个字符串都含指定字符?for吗

-一个大坑 2017-11-17 02:11:44

for(int i = 0; i < dt.Rows.Count; i++)
{
string city = "市內";
string[] cityfrom = dt.Rows[i]["cityfrom"].ToString().Split(',');
for(int j=0;j<cityfrom.Length;j++)
{
if (!cityfrom[j].Contains("深圳"))
{
city = "市外";
};
}
dt.Rows[i]["cityfrom"] = city;
}

另外在循环里面建string然后赋值和在循环外面建string然后循环里面赋值。哪个效率高点?
...全文
296 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
-一个大坑 2017-11-21
  • 打赏
  • 举报
回复
引用 16 楼 xomix 的回复:
[quote=引用 15 楼 happy4944 的回复:] [quote=引用 13 楼 xomix 的回复:] [quote=引用 12 楼 happy4944 的回复:] [quote=引用 8 楼 qq_25095899 的回复:] 在数据库里取table的时候就可以用sql搞定了,不必取出来之后循环, sql用case when
我以前是这样写,但是填的不规范,经常只填深圳[/quote] 规范化数据库,现在的数据你可以这样处理,未来的数据库要求必须选择市内市外,否则统一按照市外收费。[/quote] 虽然是这样宣导的,但是真的结算,那边就有意见。现在就改成判断是否含有深圳这个字眼[/quote] 对啊要加钱就有意见,那你的工作给你加钱了吗?给你发这个钱你再解决啊。[/quote] 本来工作就是帮人解决这种问题的
xuzuning 2017-11-21
  • 打赏
  • 举报
回复
引用 11 楼 happy4944 的回复:
[quote=引用 9 楼 xuzuning 的回复:] 10个深圳,1个广州,整体就判为 市外 我是不能理解个中思维的
不会那么多,一般两个,出发城市和到达城市,跑到别的城市就认为是市外,计算费用不一样[/quote] 既然如此那就判断到达城市是否在出发城市管辖范围内就可以了 比如 深圳市共设6个市辖行政区,即福田区、罗湖区、南山区、盐田区、宝安区、龙岗区,和4个功能区,即光明新区(隶属宝安行政区)、龙华新区(隶属宝安行政区)、坪山新区(隶属龙岗行政区)、大鹏新区(隶属龙岗行政区)。 只要到达城市不在其中,就是外市。一般书写地址时,通常会省略市名(本市范围内不会产生歧义) 像你那样判断,就会把 保安区 误判为外市了
  • 打赏
  • 举报
回复
引用 15 楼 happy4944 的回复:
[quote=引用 13 楼 xomix 的回复:] [quote=引用 12 楼 happy4944 的回复:] [quote=引用 8 楼 qq_25095899 的回复:] 在数据库里取table的时候就可以用sql搞定了,不必取出来之后循环, sql用case when
我以前是这样写,但是填的不规范,经常只填深圳[/quote] 规范化数据库,现在的数据你可以这样处理,未来的数据库要求必须选择市内市外,否则统一按照市外收费。[/quote] 虽然是这样宣导的,但是真的结算,那边就有意见。现在就改成判断是否含有深圳这个字眼[/quote] 对啊要加钱就有意见,那你的工作给你加钱了吗?给你发这个钱你再解决啊。
-一个大坑 2017-11-21
  • 打赏
  • 举报
回复
引用 13 楼 xomix 的回复:
[quote=引用 12 楼 happy4944 的回复:] [quote=引用 8 楼 qq_25095899 的回复:] 在数据库里取table的时候就可以用sql搞定了,不必取出来之后循环, sql用case when
我以前是这样写,但是填的不规范,经常只填深圳[/quote] 规范化数据库,现在的数据你可以这样处理,未来的数据库要求必须选择市内市外,否则统一按照市外收费。[/quote] 虽然是这样宣导的,但是真的结算,那边就有意见。现在就改成判断是否含有深圳这个字眼
-一个大坑 2017-11-21
  • 打赏
  • 举报
回复
引用 10 楼 xuyufeng822 的回复:
这逻辑我可能没看懂,你这就是 修改 dt.Rows[i]["cityfrom"] 值吧,那为什么还要拆分成string[] cityfrom 做循环 直接 判断 dt.Rows[i]["cityfrom"] 的 Contains("深圳") 不就可以了么
dt.Rows[i]["cityfrom"] =“深圳市,广州市”;直接 Contains("深圳")就是true了
  • 打赏
  • 举报
回复
引用 12 楼 happy4944 的回复:
[quote=引用 8 楼 qq_25095899 的回复:] 在数据库里取table的时候就可以用sql搞定了,不必取出来之后循环, sql用case when
我以前是这样写,但是填的不规范,经常只填深圳[/quote] 规范化数据库,现在的数据你可以这样处理,未来的数据库要求必须选择市内市外,否则统一按照市外收费。
-一个大坑 2017-11-21
  • 打赏
  • 举报
回复
引用 8 楼 qq_25095899 的回复:
在数据库里取table的时候就可以用sql搞定了,不必取出来之后循环, sql用case when
我以前是这样写,但是填的不规范,经常只填深圳
-一个大坑 2017-11-21
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
10个深圳,1个广州,整体就判为 市外 我是不能理解个中思维的
不会那么多,一般两个,出发城市和到达城市,跑到别的城市就认为是市外,计算费用不一样
-一个大坑 2017-11-21
  • 打赏
  • 举报
回复
引用 17 楼 xuzuning 的回复:
不会那么多,一般两个,出发城市和到达城市,跑到别的城市就认为是市外,计算费用不一样
既然如此那就判断到达城市是否在出发城市管辖范围内就可以了 比如 深圳市共设6个市辖行政区,即福田区、罗湖区、南山区、盐田区、宝安区、龙岗区,和4个功能区,即光明新区(隶属宝安行政区)、龙华新区(隶属宝安行政区)、坪山新区(隶属龙岗行政区)、大鹏新区(隶属龙岗行政区)。 只要到达城市不在其中,就是外市。一般书写地址时,通常会省略市名(本市范围内不会产生歧义) 像你那样判断,就会把 保安区 误判为外市了[/quote] 一开始因为市外情况也很多,所以城市是单独的必填栏位
  • 打赏
  • 举报
回复

select 地址 , case when (CHARINDEX(N'深圳',地址)>0 then '市内' else '市外' end as 是否市内 from 地址表
  • 打赏
  • 举报
回复
select 地址 , case when (CHARINDEX(N'深圳',地址)>0 then 市内 else 市外 from 地址表
  • 打赏
  • 举报
回复
引用 18 楼 happy4944 的回复:
[quote=引用 16 楼 xomix 的回复:] [quote=引用 15 楼 happy4944 的回复:] [quote=引用 13 楼 xomix 的回复:] [quote=引用 12 楼 happy4944 的回复:] [quote=引用 8 楼 qq_25095899 的回复:] 在数据库里取table的时候就可以用sql搞定了,不必取出来之后循环, sql用case when
我以前是这样写,但是填的不规范,经常只填深圳[/quote] 规范化数据库,现在的数据你可以这样处理,未来的数据库要求必须选择市内市外,否则统一按照市外收费。[/quote] 虽然是这样宣导的,但是真的结算,那边就有意见。现在就改成判断是否含有深圳这个字眼[/quote] 对啊要加钱就有意见,那你的工作给你加钱了吗?给你发这个钱你再解决啊。[/quote] 本来工作就是帮人解决这种问题的[/quote] 如果是这样,建议用sql语句在select的时候就选出一份预处理过的健康数据。

select 地址 , case when (CHARINDEX(N'深圳',地址)>0 then 市内 else 市外 from 地址表
这样你的代码在开始处理的时候就是健康数据,而不是在代码中处理数据健康。
xuyufeng822 2017-11-17
  • 打赏
  • 举报
回复
这逻辑我可能没看懂,你这就是 修改 dt.Rows[i]["cityfrom"] 值吧,那为什么还要拆分成string[] cityfrom 做循环 直接 判断 dt.Rows[i]["cityfrom"] 的 Contains("深圳") 不就可以了么
xuzuning 2017-11-17
  • 打赏
  • 举报
回复
10个深圳,1个广州,整体就判为 市外 我是不能理解个中思维的
大然然 2017-11-17
  • 打赏
  • 举报
回复
在数据库里取table的时候就可以用sql搞定了,不必取出来之后循环, sql用case when
-一个大坑 2017-11-17
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
Count函数指定包含条件,再与数组的length比较。 只要不是对字符串+= 效率上几乎没有差别吧。
第一句没看懂,count我一直就当统计数量在用 第二个,我看别人写的都是在循环外面建的string,然后循环时进行赋值。我还以为循环建类型比较慢
-一个大坑 2017-11-17
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
您的业务逻辑有问题吧?
什么问题?把用,拼接的城市名分成字符串组,然后循环判断,有任意一个不包含深圳就是市外的
-一个大坑 2017-11-17
  • 打赏
  • 举报
回复
引用 3 楼 hanjun0612 的回复:
datatable的话,应该是这样的 DataTable dt; var q = dt.AsEnumerable().Where(x => x["列名"].ToString().Contains("123")).CopyToDataTable();
是datatable,不过取得城市名是用,拼接起来的。
xuzuning 2017-11-17
  • 打赏
  • 举报
回复
您的业务逻辑有问题吧?
正怒月神 2017-11-17
  • 打赏
  • 举报
回复
datatable的话,应该是这样的 DataTable dt; var q = dt.AsEnumerable().Where(x => x["列名"].ToString().Contains("123")).CopyToDataTable();
加载更多回复(2)

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧