0

Good day!

I have this query as shown below:

jt.SummarySpecs.Where(
x => true
)
.FirstOrDefault()
.DocSpecs
.Where(
    x => x.DocID == x.DocID
)
.FirstOrDefault()
.FinishingOptionsDesc[0] = option;

But when the code get executed, value for finishingOptionsDesc[0] is not updating...

what's wrong with the query above?


The classes attributes:

"SummarySpecs.cs"
    public DocSpec[] DocSpecs { get; set; }

"DocSpecs.cs"
    public string[] FinishingOptionsDesc { get; set; }

My only concern is to update the FinishingOptionDesc 1st string.

Thanks

4

2 回答 2

1

该错误意味着某些内容为空。您在一个语句中有 4 个未经检查的地方可能有一个空返回值。如果这些集合为空,则对 FirstOrDefault 的任何调用都可能返回 null。或者 DocSpecs 在返回的对象上可能为 null,或者 FinishingOptionsDesc 可能为 null。

理想情况下,您应该稍微分解一下这个语句并插入空检查。你可以说你知道这些点都不应该空。如果是这种情况,允许发生异常可能是有效的,但可以说,仍然值得拆分语句以更好地报告异常发生的位置。

于 2013-04-09T07:03:25.793 回答
0

尝试这样的事情.. 更新

if(jt.SummarySpecs.Select(a=>a.DocSpecs).Any())
{
    var docSpecs = jt.SummarySpecs.Select(a => a.DocSpecs)
    docSpecs.FinishingOptionsDesc[0] = option;
}
于 2013-04-09T07:50:55.723 回答