iho*_*rko -1 c# linq asp.net lambda
我有班级的对象
public class Person
{
public string Error { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有些人有错误(没有姓名和年龄),有些人没有错误(姓名和年龄)
Person[] p1 = new Person[] { new Person { Error = "Error1" }, new Person { Name = "Name1", Age = 1 } };
Person[] p2 = p1
.Where(c => string.IsNullOrEmpty(c.Error))
.Select(
c => new Person { Name = c.Name, Age = c.Age }
).ToArray()
Union()
.Where(d => !string.IsNullOrEmpty(d.Error))
.Select(
d => new Person { Error = d.Error }
).ToArray()
Run Code Online (Sandbox Code Playgroud)
我需要创建第二个数组p2,在那里我可以从p1中选择所有具有Error的人对象,并且联合来自同一个p1但没有错误的所有人.
我需要类似上面的代码,但它不起作用.我怎么能用一个lambda子句写它?
非常感谢?
p1.Where(c => string.IsNullOrEmpty(c.Error))
.Union(p1.Where(d => !string.IsNullOrEmpty(d.Error)))
.ToArray()
Run Code Online (Sandbox Code Playgroud)
你需要在IEnumberable里面添加第二个.Union.而且无需再次投影,因为对象已经是您需要的类型.
虽然在这种情况下有点没有实际意义,但结果却是一样的 p1
好的,我自己找到了解决方案,应该是这样的:
Person[] p2 = p1
.Where(c => string.IsNullOrEmpty(c.Error))
.Select(
c => new Person { Name = c.Name, Age = c.Age }
)
.Union(
p1.Where(d => !string.IsNullOrEmpty(d.Error))
.Select(
d => new Person { Error = d.Error }
)
).ToArray();
Run Code Online (Sandbox Code Playgroud)
抱歉,也许我的回答不太清楚。谢谢大家的回复。
| 归档时间: |
|
| 查看次数: |
9473 次 |
| 最近记录: |