оператор выбора linq

У меня может быть та же проблема, что и у вас, но я не уверен.

У меня были ObservableCollection и ListBox, связанные с ним. Но по какой-то странной причине мой ListBox не обновлялся, когда я изменил свойства MyEntity объектов в списке.

После поиска я нашел следующую страницу, и мне просто пришлось сообщить вам:

http://www.wblum.org/listbind/net3/index.html

Это очень хорошее описание того, что вы должны сделать, чтобы получить ListBox для обновления при изменении списка или объектов в нем. Надеюсь, что вы выиграете от этого.

45
задан Aaron Hall 7 August 2017 в 15:43
поделиться

7 ответов

Если это просто оператор CASE в LINQ после (прочтите ваш комментарий), то примером этого является ...

Int32[] numbers = new Int32[] { 1, 2, 1, 3, 1, 5, 3, 1 };

var numberText =
(
    from n in numbers
    where n > 0
    select new
    {
        Number = n,
        Text = 
        (
            n == 1 ? "One" :
            n == 2 ? "Two" :
            n == 3 ? "Three" : "Unknown"
        )
    }
);
103
ответ дан 26 November 2019 в 21:03
поделиться

Сначала выберите элементы, которые вы хотите обновить. Затем обновите их на обычном C #. Отправьте изменения.

    var q = from osc in MyDataContext.osc_products
            join cds in cds_oeinvitem on osc.products_model equals cds.itemno into p
            where osc.Itemwebflag == 'Y'
            select p;

    foreach (var item in q)
    {
        if (item.itempromoflag != "N")
            item.products_quantity = 100000;
        else if ((new[] { 1, 2, 31 }.Contains(item.itemcat1)) && (item.itemsalestatus == 'S'))
            item.products_quantity = 100000;
        else if (item.itemsalestatus == 0)
            item.products_quantity = 0;
        else
            item.products_quantity = item.itemqtyonhand - item.itemqtycommitted;
    }

    MyDataContext.SubmitChanges();
1
ответ дан 26 November 2019 в 21:03
поделиться

Вот мой прогресс, пока не работает, но это начало:

var query2 = from items in db.cdsItems
             where items.ItemTrackingCode.Equals("A") && (items.ItemQtyOnHand - items.ItemQtyCommitted) > 0
             select new  {
                           items,
                           qty =
                                 (
                                    items.ItemPromoFlag.Equals("1") ? "100000" :
                                    items.ItemCat1.Equals("1") ? "100000" :
                                    items.ItemSaleStatus.Equals("O") ? "0" :
                                    (items.ItemQtyOnHand - items.ItemQtyCommitted).ToString
                                 )
                         };

Этот синтаксис кажется таким неудобным для мне ... Я могу просто пропустить sql.

3
ответ дан 26 November 2019 в 21:03
поделиться

В Linq нет оператора «Обновить» (какой бы вариант вы ни использовали, будь то LinqToSQL или LinqToEntities).

Linq строго предоставляет язык запросов.

Если вы используете LinqToSQL и хотите обновить данные, вам нужно сначала запросить контекст для элементов, которые вам нужно обновить, затем перебрать их, чтобы изменить их свойства, и, наконец, вызвать SubmitChanges, чтобы сохранить изменения в базе данных.

0
ответ дан 26 November 2019 в 21:03
поделиться

использование вашего единственного оператора UPDATE в хранимой процедуре будет лучше, чем выполнение цикла обновлений на сервере приложений.

1
ответ дан 26 November 2019 в 21:03
поделиться

Вы выполняете массовое обновление, но ссылка - это чисто инструмент для запросов и выбора объекта. Используйте подходящий инструмент для работы ... которым в данном случае определенно является сервер базы данных.

0
ответ дан 26 November 2019 в 21:03
поделиться

http://bartdesmet.net/blogs/bart/archive/2008/03/30/a-functional-c-type-switch.aspx рассказывает о реализации функционального переключателя чехол.

1
ответ дан 26 November 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: