Linq:将值复制到另一个

Kri*_*s-I 2 c# linq linq-to-objects

我有一个这个对象的集合:

public Class MyObject()
{
    public int Id { get; set; }
    public int Code { get; set; }
    public string NL { get; set; }
    public string FR { get; set; }
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有这个

IList<MyObject> listObject = new List<Object>();
bool res = MyMethod();
Run Code Online (Sandbox Code Playgroud)

我想依赖res结果将FR的所有值复制到Value,如果res为false,则从NL复制到Value:

我试试这个:

var res = (from p in listObject select new { Id = p.Id, Value = ??????  });
Run Code Online (Sandbox Code Playgroud)

?????? reprsent我找不到的代码:(

任何的想法 ?

谢谢,

UPDATE1 我做了一个更通用的方法:

  public void MyTest<T>(IList<T> list) where T : ILookup
    {

        bool res = MyMethod();
        var result = (from p in list select new { Id = p.Id, Value = res? p.FR : p.NL });
        return result;

    }
Run Code Online (Sandbox Code Playgroud)

什么是返回类型?

And*_*ose 5

一个条件或三元运营商将在这里帮助.它的工作原理示例如下:

var result = booleanExpression ? valueIfTrue : valueIfFalse;
Run Code Online (Sandbox Code Playgroud)

应用于您的代码它看起来像这样:

var copy = (from p in listObject select new { Id = p.Id, Value = res ? p.FR : p.NL}); 
Run Code Online (Sandbox Code Playgroud)

如果希望结果可以从方法返回,则必须使用带有select语句的类,而不是创建匿名类型:

var copy = (from p in listObject select new MyObject { Id = p.Id, Value = res ? p.FR : p.NL}); 
Run Code Online (Sandbox Code Playgroud)

其中MyObject具有定义为Id和Value的属性.然后你可以把它作为

IEnumerable<MyObject >.
Run Code Online (Sandbox Code Playgroud)