我有这个对象的集合:
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();
我想依赖res结果将FR的所有值复制到Value,如果res为false,则从NL复制到Value:
我试试这个:
var res = (from p in listObject select new { Id = p.Id, Value = ?????? });
??????代表我找不到的代码:(
有什么想法吗?
谢谢,
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;
}
什么是返回类型?
答案 0 :(得分:5)
conditional or ternary operator会有所帮助。它的工作原理如下:
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 >.
答案 1 :(得分:4)
使用三元运算符
var result = (from p in listObject select new { Id = p.Id, Value = res ? p.FR : p.NL });