iT邦幫忙

0

foreach 問題請教

c#

是這樣的,我有用到一個foreach迴圈,

跑完後理論上應該要跑出B,C,I這樣,

但我卻跑出B,C,I,

所以想請問我該如何修改?

以下是我的程式碼:

 foreach (string HEPATITIS in model.HEPATITISS)
	       {
               model.HEPATITIS += HEPATITIS+",";
	       }
froce iT邦高手 1 級 ‧ 2018-12-07 13:00:58 檢舉
跑完回圈把","幹掉就好了吧?
你的code理論上就是會跑"B,C,I,"。
我覺得 iT 邦的大大們都是天使
fysh711426 iT邦研究生 5 級 ‧ 2018-12-07 14:27:07 檢舉
提供兩個不一樣的解法,先說我離題了,哈哈哈

var HEPATITISS = new List<string>();

//使用 string.Join
var HEPATITIS = string.Join(",", HEPATITISS.ToArray());

//使用 LINQ 的 Aggregate
var HEPATITIS = HEPATITISS.Aggregate("", (r, it) => r + (it != "" ? "," : "") + it);
0
小魚
iT邦高手 1 級 ‧ 2018-12-07 12:36:30
最佳解答

我的方式

model.HEPATITIS = "";
foreach (string HEPATITIS in model.HEPATITISS)
{
    if (!string.IsNullOrWhiteSpace(model.HEPATITIS))
        model.HEPATITIS += ",";
    model.HEPATITIS += HEPATITIS;
}

如果是for迴圈就用 i > 0 判斷,

BTW, 這個命名真的是很有藝術 XD

tenno081 iT邦新手 5 級 ‧ 2018-12-07 13:07:34 檢舉

太感謝了

tenno081 iT邦新手 5 級 ‧ 2018-12-07 13:12:09 檢舉

我是做醫療有關地所以才用那種命名方式,我知道我還很遜需要多多磨練/images/emoticon/emoticon02.gif

1
Luke
iT邦新手 4 級 ‧ 2018-12-07 13:03:30
bool isFirst= true;
 foreach (string HEPATITIS in model.HEPATITISS)
 {
    if(isFirst){
       isFirst =false;
       model.HEPATITIS += HEPATITIS;
    }else
       model.HEPATITIS += (","+HEPATITIS);
  }

/images/emoticon/emoticon06.gif

string result = model.MergeHEPATITISS

在model 內寫一個 方法

public string MergeHEPATITISS
{
	get{
		string res = "";
		foreach (string tmp in this.HEPATITISS)
		{
			if (!string.IsNullOrWhiteSpace(res))
				res += ",";
			res += tmp;
		}
		return res;
	}
	set{}
}
tenno081 iT邦新手 5 級 ‧ 2018-12-07 13:13:59 檢舉

原來屬性也可以加入foreach喔?但這看起來好像是只有讀取這樣嗎?

小魚 iT邦高手 1 級 ‧ 2018-12-07 13:28:45 檢舉

get跟set裡面可以放很多東西, 我還看過整個資料庫的流程都放進去的 @@

tenno081 iT邦新手 5 級 ‧ 2018-12-07 13:31:20 檢舉

但是這個好像只有讀取,若要能夠寫入應該set那裏也要再來一次迴圈嗎?如果是的話好像沒有您這樣的簡單

6
攻城屍
iT邦新手 5 級 ‧ 2018-12-07 14:08:54

如果是要將字串陣列轉成字串並利用符號分隔,可以考慮使用 string.join

string.Join(',', model.HEPATITISS)
dog830228 iT邦研究生 4 級 ‧ 2018-12-07 17:06:47 檢舉

在此案例我推薦使用String.Join method 兩個原因

  1. 看起來簡潔
  2. 它內部使用StringBuilder https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/string.cs 可增進記憶體效率
1

不建議在迴圈裡處理,應該跑完再拿掉才是正解~

0
優悠
iT邦新手 5 級 ‧ 2018-12-07 16:09:25

在迴圈外寫上這個

model.HEPATITIS=model.HEPATITIS.TrimEnd(',');

我要發表回答

立即登入回答