繁体   English   中英

在 C# 中使用 Linq 更新现有列表

[英]Updating an existing List using Linq in C#

我有一个列表和数据如下。

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应该是第一个字母。

预计 Output:

//test = [{1,'A','G'},{2,'GE','B'}]

我尝试使用 Linq foreach实现如下。 但我不确定在 Linq 内的 forloop 中编写条件语句,导致错误。

test.ForEach(x=> return x.Take(1))

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)
{
    // ,,,
}

您可以简单地使用String.Substring如下:

test.ForEach(s =>
{
    s.Name = s.Name.Substring(0, 2);
    s.Quality = s.Quality.Substring(0, 1);
});

谢谢, @Tim指出如果NameQuality很短,那么这段代码会抛出异常。 有关可能的解决方案,请参阅Problem with Substring() - ArgumentOutOfRangeException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM