C# Linq:将一个值复制到另一个值

C# Linq:将一个值复制到另一个值,c#,linq,linq-to-objects,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; } } 我有这个 IList<MyObject> listObjec

我拥有此对象的集合:

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; }
}
我有这个

IList<MyObject> listObject = new List<Object>();
bool res = MyMethod();
这个??????请报告我找不到的代码:(

有什么想法吗

谢谢

更新1 我提出了一个更通用的方法:

  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;

    }
public void MyTest(IList列表),其中T:ILookup
{
bool res=MyMethod();
var result=(从列表中的p选择新的{Id=p.Id,Value=res?p.FR:p.NL});
返回结果;
}

返回类型是什么?

使用三元运算符

var result = (from p in listObject select new { Id = p.Id, Value = res ? p.FR : p.NL  });
A将在这里提供帮助。其工作原理示例如下:

var result = booleanExpression ? valueIfTrue : valueIfFalse;
应用于您的代码时,它将如下所示:

var copy = (from p in listObject select new { Id = p.Id, Value = res ? p.FR : p.NL}); 
如果希望结果可从方法返回,则必须在select语句中使用类,而不是创建匿名类型:

var copy = (from p in listObject select new MyObject { Id = p.Id, Value = res ? p.FR : p.NL}); 
其中MyObject的属性定义为Id和Value。然后可以将其作为

IEnumerable<MyObject >.
IEnumerable。

调用集合变量而不是
res
可能是有意义的。@Lasse-非常有效的一点;在原始代码中没有注意到。感谢查看我的更新1。@Andy如果将“res”更改为“result”,也需要在Linq部分使用“result:)。当然,在我的代码中不是res,但“res”(result)较短。复制的返回类型是什么?@Kris-I-copy将是由select new创建的匿名对象的集合{Id=p.Id,…您可以在创建它的方法的范围内使用它,但不能从该方法返回它。如果要使副本成为可返回的对象,则需要使用select语句的类创建对象,即select new MyObject(Id=p.Id,…),然后可以将其作为IEnumerable返回。
IEnumerable<MyObject >.