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)
什么是返回类型?
一个条件或三元运营商将在这里帮助.它的工作原理示例如下:
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)