相关疑难解决方法(0)

"具有语句主体的lambda表达式无法转换为表达式树"

在使用EntityFramework时,我A lambda expression with a statement body cannot be converted to an expression tree在尝试编译以下代码时收到错误" ":

Obj[] myArray = objects.Select(o =>
{
    var someLocalVar = o.someVar;

    return new Obj() { 
    Var1 = someLocalVar,
    Var2 = o.var2 };
}).ToArray();
Run Code Online (Sandbox Code Playgroud)

我不知道错误意味着什么,最重要的是如何解决它.有帮助吗?

c# linq linq-to-entities entity-framework

160
推荐指数
8
解决办法
9万
查看次数

干(不要重复自己)和如果分配

我想我忘记了一些明显的东西,但是我似乎无法找到一种方法来分配一个值,如果它确认一个条件尽可能保持DRY ......一些代码来解释我的意思......

a = (b > 1) ? b : c;
Run Code Online (Sandbox Code Playgroud)

甚至 a = (a > 1) ? a : b;

所以当然这里没什么大不了的,但如果要用方法调用替换,(可能是那里的收益率)或其他什么,那么我就要调用它两次......

我唯一看到的是将它存放在一个变量中,然后就像上面的代码一样......

有什么好主意吗?

编辑以便更好地理解:假设我在xml文件中搜索一个值,使用空检查(?.?[])等等

string store_no = myXmlNode.SelectSingleNode("aChildNode")?.SelectSingleNode("myNode")?.Attributes?["store_no]?.Value;
Run Code Online (Sandbox Code Playgroud)

所以在这里我将它存储在一个变量中,以便我可以稍后测试它的值.如果我想检查一个特定的store_no!我将不得不做类似的事情

store_no = (store_no=="STORE23")? store_no : "unknown";
Run Code Online (Sandbox Code Playgroud)

...是的,不确定这个例子是否足够明确,但这个想法就在这里; 我可能不想将数据存储在变量(例如巨大的数据块)中是否有办法获得相同的结果?

c# syntax if-statement dry

1
推荐指数
1
解决办法
358
查看次数