从一些属性和一些逻辑中混合列表

时间:2011-03-30 14:27:11

标签: c# string list linq

我需要使用对象列表中的一个或两个属性将字符串列表混合在一起,但需要依赖于一些逻辑。列表中的每个项目应该是属性1和属性2连接在一起的字符串值,用连字符分隔。 UNLESS属性1与属性2具有相同的字符串值,在这种情况下,该项只是属性1.为了澄清,所有对象都是相同的类型,并且这两个属性都是字符串值。

这是一个例子来说明以防我没有意义..

Object 1: Prop 1 = "Object 1", Prop 2 = "Object 1" // Same value
Object 2: Prop 1 = "Object 2", Prop 2 = "Obj 2"    // Different

结果列表=

[0] = "Object 1",
[1] = "Object 2-Obj 2"

使用Linq或其他东西而不是手动循环是否有“整洁”的方法?

1 个答案:

答案 0 :(得分:4)

这样的事情?

var result = allItems.Select(
    item=>
    item.Prop1==item.Prop2
       ? item.Prop1
       : String.Format("{0}-{1}",
          item.Prop1, item.Prop2)
);