我有一個串列和資料如下。
public class Test
{
public int Id {get;set;}
public string Name {get;set;}
public string Quality {get;set;}
}
Test test = new Test();
//db call to get test data
//test = [{1,'ABC','Good'},{2,'GEF','Bad'}]
我必須修改串列,Name使其只能是前 2 個字符并且Quality應該是第一個字母。
預期輸出:
//test = [{1,'A','G'},{2,'GE','B'}]
我試圖用 Linq 實作foreach如下。但是我不確定在 Linq 中的 forloop 中撰寫條件陳述句,這會導致錯誤。
test.ForEach(x=> return x.Take(1))
uj5u.com熱心網友回復:
List.ForEach雖然不是 LINQ
test.ForEach(t => { t.Name = t.Name.Length > 2 ? t.Name.Remove(2) : t.Name; t.Quality = t.Quality.Length > 1 ? t.Quality.Remove(1) : t.Quality; });
更好的是簡單地呼叫一個方法來做到這一點。
test.ForEach(Modify);
private static void Modify(Test t)
{
// ,,,
}
uj5u.com熱心網友回復:
您可以簡單地使用String.Substring,如下所示:
test.ForEach(s =>
{
s.Name = s.Name.Substring(0, 2);
s.Quality = s.Quality.Substring(0, 1);
});
謝謝,@Tim指出如果NameorQuality很短,那么這段代碼會引發例外。有關可能的解決方案,請參閱Substring() 的問題 - ArgumentOutOfRangeException 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/428902.html
上一篇:如何使用三個集合制作一個集合?
