【发布时间】:2015-12-23 14:43:05
【问题描述】:
我有类的对象
public class Person
{
public string Error { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
有些有错误(没有姓名和年龄)有些没有错误(以及姓名和年龄)
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()
我需要创建第二个数组 p2,在这里我可以从 p1 中选择所有有错误的人员对象,并将同一 p1 中没有错误的所有人员联合起来。
我需要上面代码中的内容,但它不起作用。如何在一个 lambda 子句中编写它?
非常感谢?
【问题讨论】:
-
这是您想要的语法正确的查询吗?
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(); -
but it's not working为什么会这样? -
如果您从
p1中选择所有具有Error和Union的人,并从p1中选择所有具有no Error的人,您将得到p1。 :) -
是的,我需要相同的结果p1,这只是一个例子,实际有xml输入