2015-04-26 54 views
0

我使用外部DLL作为参考。需要一个表达式作为参数传递给c#

当我尝试使用一个方法,它要求一个表达式作为参数来过滤结果。

及其期望的类型如下

Expression<Func<Template, bool>>类型作为参数。

模板类型具有名称和组ID作为属性。

我想创建一个表达式来检查对象是否与组ID相同,以及名称是否包含在项目列表中,如下所示。

Expression<Func<Template, bool>> filterTemplatesDestination = tmplt => 
    stselectedTemplates.Contains(tmplt.Name) && 
    tmplt.TemplateGroupId == stDestGroupID; 

但是,当我将这个表达式分配给方法我得到一个异常。如果我只使用组ID来过滤它工作正常。当我使用条件来检查名称是否存在于我的条件中时,该表达式将引发异常。

+4

您能否提供能够正确工作的代码(正如您所提及的)并提供您正在使用当前示例获得的例外情况? – Prescott

+0

唯一的例外,我觉得你可以从stdelectedTemplates的这个代码中得到一个nullReferenceExection。这是一个吗? –

回答

1

我想你会得到一个NullReferenceException,我没有看到任何其他可能的异常在你的代码。试试这个:

Expression<Func<Template, bool>> filterTemplatesDestination = tmplt => 
      (stselectedTemplates!= null && tmplt.Name!=null && stselectedTemplates.Contains(tmplt.Name)) && 
      tmplt.TemplateGroupId == stDestGroupID; 
0

它好像你stselectedTemplate或您tmplt.Name是空的,我将采取保罗·科斯塔的回答,而是检查这两个空例外,但它可能是更好的调试代码,并找到正是为什么这些变量返回null。

相关问题