Как привести динамический объект к типу и сравнить - PullRequest
0 голосов
/ 01 октября 2018

У меня есть модель с названием products,

public class Product
{                 
    public string Name { get; set; }

    public string Sku { get; set; }

    public float Cost { get; set; }

    public string Description { get; set; }        
}

Я получу список объектов динамического типа из внешнего источника следующим образом:

string query = "SELECT Id,Name,KNDYCPQ__Description__c,KNDYCPQ__ProductCode__c FROM KNDY4__Product__c";
List<dynamic> products = new List<dynamic>();
products = await SalesforceSyncProvider.QueryAsync(query);
foreach (var x in products)
{
    Product product = new Product();
    if (db.Products.Where(a => a.Sku ==x.KNDYCPQ__ProductCode__c).FirstOrDefault() != null) {

    product.Name = x.Name;
    product.Sku = x.KNDYCPQ__ProductCode__c;
    product.Description = x.KNDYCPQ__Description__c;
    product.Cost = 2000;
    db.Products.Add(product);
    }
}

Итак, перед добавлением в мою базу данныхЯ хочу проверить код продукта (KNDYCPQ__ProductCode__c) с помощью моего Sku, чтобы избежать дублирования, но условие if не выполняется и выдает ошибку, что дерево выражений может не содержать динамическую операцию.

1 Ответ

0 голосов
/ 01 октября 2018

Поместите x.KNDYCPQ__ProductCode__c в строго типизированную переменную и используйте это в выражении.

string sku = x.KNDYCPQ__ProductCode__c;

if (db.Products.Where(a => a.Sku == sku).FirstOrDefault() != null) {

//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...