2012-04-30 40 views
1

只有1个Linq查询可以实现以下功能吗?效率更高吗?LINQ to Object选择2个值

var o = new myObject { 
    Value = 
     (from value in g 
     select value.Value).FirstOrDefault(), 
    Id = 
     (from value in g 
     select value.Id).FirstOrDefault(), 
    ... } 

回答

2
var result = (from value in g 
      select new 
       { 
       Value = value.Value, 
       ID = value.ID 
       }).FirstOrDefault(); 

编辑:(编辑过的基于问题的)
在这种情况下,我宁愿先有值,然后使用在构造函数中对我的对象。您的选择可能涉及条件或where子句。我认为在Linq中反对,性能不会有太大影响,或者可能取决于集合的大小,但我仍然认为它会很小。仍然最好的方法是先选择该项目,然后在对象初始化中使用它。

var result = (from value in g 
      select new 
       { 
       Value = value.Value, 
       ID = value.ID 
       }).FirstOrDefault(); 

var o = new myObject{Value = result.Value, ID = result.ID} 
+0

对不起,我不认为这会为我工作,看到更新的代码片段 – Tsar

+0

@Tsar,我已经更新了我的答案 – Habib