iT邦幫忙

1

C#字串陣列可以比大小嗎?

c#

目前資料庫有一筆資料,其中一個欄位是這樣子的

caseNo
100-Q-00001
100-Q-00002
100-Q-00003
...
100-Q-10000

假使我想找其中的一段(例如100-Q-00500100-Q-00600)
是有什麼方法可以解的嗎?
目前有試過Startswith/Endswith,還有CompareTo
這兩個方法最後會使result清空找不到

0
小魚
iT邦高手 1 級 ‧ 2018-10-31 11:56:22

如果是連續的, 感覺 > 跟 < 可能可以...
你有試過SQL語法下 > 跟 < 嗎?

0
Homura
iT邦研究生 2 級 ‧ 2018-10-31 11:59:03

建議把資料塞進List<T>
然後使用LINQ來比

2
暐翰
iT邦大師 4 級 ‧ 2018-10-31 13:04:05

目前資料庫有一筆資料,其中一個欄位是這樣子的...假使我想找其中的一段(例如100-Q-00500到100-Q-00600)

假如是資料庫資料,不要查詢到C#再做一次比較,可以使用SQL between 達到目的,以下是舉例:

測試資料:

CREATE TABLE T
	([caseNo] varchar(11))
;
	
INSERT INTO T
	([caseNo])
VALUES
	('100-Q-00001'),
	('100-Q-00002'),
	('100-Q-00003'),
	('100-Q-00003'),
	('100-Q-00500'),
	('100-Q-00501'),
	('100-Q-00600'),
	('100-Q-10000')
;

查詢SQL:

--假使我想找其中的一段(例如100-Q-00500到100-Q-00600)
select * from T where [caseNo] between '100-Q-00500' and '100-Q-00600'

結果:
2018-10-31.13.03.45-image.png

Homura iT邦研究生 2 級 ‧ 2018-10-31 13:42:17 檢舉

想說他是有什麼目的要先拿出來在比較@@

暐翰 iT邦大師 4 級 ‧ 2018-10-31 14:01:09 檢舉

有特殊目的話,可以用Regex做判斷

Homura iT邦研究生 2 級 ‧ 2018-10-31 14:10:27 檢舉

重看了一下他的題目
應該要用SQL between做才對XD

0
kaidokuja
iT邦新手 5 級 ‧ 2018-10-31 13:49:20

如果可以的話還是建議先在資料庫撈取,除了用between,可以試試regex

XXX like '100-Q-00[56]%'  -- 這個會連同600~699,有誤
--此題硬要加就可能變成
(XXX like '100-Q-005[0-9][0-9]' or XXX = '100-Q-00600')

但以樓主發問的角度,我推測你應該要另外開一組新的 List / DataTable 來儲存,
若你拿原本撈出來的內容去進行比對然後刪除,這是一個明顯的錯誤。

我要發表回答

立即登入回答