首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当多个产品时,每个产品的C#动态都会给我一个错误

当多个产品时,每个产品的C#动态都会给我一个错误
EN

Stack Overflow用户
提问于 2016-06-30 01:54:19
回答 1查看 68关注 0票数 1

我正在尝试使用查询表达式来获取需要用于更新字段的数据,从而使用发票上的每个行项目更新一个字段(而不是覆盖已有的内容)。

到目前为止,我已经能够在只有一个行项目的情况下很好地工作。但是,每当我对多个行项目进行测试时,我都会得到“给定的键不在字典中”。错误。

在正确的方向上有什么帮助或推动吗?

代码语言:javascript
复制
    QueryExpression lineitem = new QueryExpression("invoicedetail");
    lineitem.ColumnSet = new ColumnSet("quantity", "productid", "description");
    lineitem.Criteria.AddCondition("invoiceid", ConditionOperator.Equal, invoiceid);

    EntityCollection results = server.RetrieveMultiple(lineitem);
    Invoice.Attributes["aspb_bookmarksandk12educational"] = "Purchases";
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "\n";
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "Product" + "        " + "Quantity";
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "\n";

    foreach (var a in results.Entities)
            {
    string name = a.Attributes["description"].ToString();
    string quantity = a.Attributes["quantity"].ToString();
    Invoice.Attributes["aspb_bookmarksandk12educational"] += " " + name + " ";
    Invoice.Attributes["aspb_bookmarksandk12educational"] += quantity;
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "\n";
    }
EN

回答 1

Stack Overflow用户

发布于 2016-06-30 02:03:47

代码语言:javascript
复制
"The given key was not present in the dictionary."

表明问题在于您试图访问属性值的方式,而不是返回多个实体的方式。当您尝试获取属性值时,请尝试在读取该值之前检查该属性是否存在,如下所示:

代码语言:javascript
复制
if (a.Attributes.ContainsKey("description"))
{
    var name = a.Attributes["description"] as string;
}

或者使用SDK扩展方法来帮助执行检查,并为您返回默认值,如下所示:

代码语言:javascript
复制
var name = a.GetAttributeValue<string>("description");
var quantity = a.GetAttributeValue<decimal>("quantity");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38106853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档