2016-10-21 55 views
1

是否有可能使用变种abc而不必调用两次转换?我的意思是像def,但没有第二个来自?LINQ:选择结果在哪里?

喜欢的东西:

var desired = (from x in AnswerRecords 
       select Converter(x) as bla 
       where bla != null 
       ).ToList(); 
+1

像95%的有*不*做什么你问。你不应该包含大量完全不相关的代码。 – Servy

回答

3

您的情况完全符合let关键字的用法。

用它来存储Converter的结果,然后检查一下:这个问题的内容

var result = from item in AnswerRecords 
      let converted = Converter(item) 
      where converted != null 
      select converted; 
0

当你使用,你可以很容易地调用链链接的方法调用语法...

AnswerRecords.Select(x => Converter(x)).Where(x => x != null).ToList(); 

甚至更​​短:

AnswerRecords.Select(Converter).Where(x => x != null).ToList(); 

编辑:

var desired = (
     from y in (
      from x in AnswerRecords 
      select Converter(x) 
     ) 
     where y != null 
     select y 
    ).ToList(); 
+0

不,我想要的是sql式的linq,而不是链式方法调用语法。 – User1

+0

@ User1编辑...但它不是更可读恕我直言。 – Lucero

+0

这就是我已经拥有的。我要去解决(从AnswerRecords中的x选择Converter(x))。其中(x => x!= null).ToList(); – User1