Каким-либо решением Сегодня проблемы Вычисляемого столбца является SharePoint?

Похоже, ваш list3 - это просто временный список для хранения предметов из list2. Просто используйте это:

var list3 = list2.Where(x => !list1.Any(y => x.MyProperty == y.MyProperty));

И затем добавьте их в list1:

list1.AddRange(list3);

Однако вы можете напрямую обновить list1 с помощью простого цикла.

foreach(var e in list2)
{
    if(!list1.Any(x => x.MyProperty == e.MyProperty))
        list1.Add(e);
}

Вы также можете использовать Except, чтобы выполнить проверку на равенство ваших предметов. Таким образом, вы должны предоставить IEqualityComparer:

var list3 = list2.Except(list1, new MyComparer());

class MyComparer : IEqualityComparer<MyElementType>
{
    public bool Equals(MyElementType x, MyElementType y)
    {
        return x.MyProperty == y.MyProperty;
    }
    public int GetHashCode(MyElementType e)
    {
        return e.MyProperty.GetHashCode();
    }
}
10
задан MDRoz 18 May 2009 в 17:04
поделиться

5 ответов

Для этого просто нет никакого решения. Поскольку значения для списка хранятся в базе данных и возвращаются "как есть" другим функциям, таким как поисковый робот, невозможно создать динамическое поле.

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

4
ответ дан 4 December 2019 в 02:52
поделиться

Я советую создать свое поле включения, которое будет выполнять эти вычисления за вас, а затем указать его в своем списке SharePoint. Непростая реализация, но она сработает.

0
ответ дан 4 December 2019 в 02:52
поделиться

I have been looking for a solution either, still no luck.. The Today column trick has the limitation of not being dynamic.

I do have one suggestion though, why don't we create a timer job that will update a certain a certain column with the current date every day at 12 AM. I know some of you all might think it an over head. Just my suggestion :D!!

0
ответ дан 4 December 2019 в 02:52
поделиться

В дополнение к статье Кристофа (PathToSharePoint) здесь также описывается трюк Today и почему он не работает

Правда об использовании Today в вычисляемых столбцах

Существует ряд уловок, вероятно, лучшим из них является консольное приложение Dessie (упомянутое выше MNM)

Динамическое обновление вычисляемого столбца SharePoint, содержащего ссылку Today

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

Прежде чем идти по этому пути, вы должны спросить себя, действительно ли вам это нужно. Например : -

  • Если вам нужен обратный отсчет (просроченные дни / дни, оставшиеся до завершения задачи) , вы можете использовать SPD и веб-часть просмотра данных XLST

  • Если вы хотите, чтобы в представлении отображались просроченные элементы или элементы, созданные за последние X дней ec, тогда вы можете использовать [Сегодня] в фильтре просмотров 2

4
ответ дан 4 December 2019 в 02:52
поделиться

Я придумал очень грубое, но рабочее решение этой проблемы без необходимости кодирования. Я объясню, как я сделал столбец «Сегодня», и как я обработал его в столбце с просрочкой, потому что в этом столбце тоже было сложно понять, как это сделать.

Сначала я создал колонку с названием «сегодня» (ах!). Затем я создал столбец «Просроченные дни». Затем я открыл конструктор sharepoint и создал новый рабочий процесс. Я установил его запускать каждый раз, когда элемент редактируется / обновляется (имейте в виду, что я отключил управление версиями для этого списка, иначе мне пришлось бы прибегнуть к кодированию, чтобы избежать скопления бесполезных данных на нашем сервере). Я установил действия, чтобы просто сохранить измененную дату в переменной рабочего процесса, а затем изменить значение столбца сегодня на эту переменную. хотя измененный столбец - это дата / время, а мой столбец «Сегодня» - это просто дата, он отлично передается. Затем я поставил рабочий процесс на паузу на 2 часа. вы можете установить любое количество времени, которое вы хотите, очевидно, это просто изменит самое последнее возможное время для обновления вашего сегодняшнего столбца, то есть 2 часа ночи в моем случае.

в столбце "Просроченные дни". это код этого парня -

=IF([Due Date]>Today,"None",IF([Date Closed]=0,Today-[Due Date],IF([Due Date]>[Date Closed],"None",IF(Today>=[Date Closed],[Date Closed]-[Due Date],IF([Due Date]<Today,Today-[Due Date])))))

Он показывает просроченные дни в числовой форме в днях, или, если это не просрочено, показывает «Нет». Вы можете использовать числовой или строковый формат, но НЕ ФОРМАТ ДАТЫ. Что ж, я надеюсь, что это поможет всем, кто сталкивается с этой проблемой и не хочет углубляться в кодирование.

РЕДАКТИРОВАТЬ: Я забыл сказать, что в приведенном выше коде для столбца просроченных дней я вставил это, если сегодня уже прошла дата закрытия, использовать дату закрытия за вычетом срока платежа вместо сегодняшнего дня за вычетом срока платежа, чтобы гарантировать, что вычисление не будет продолжаться после закрытия позиции. вы, вероятно, заметили бы это в коде, но я чувствовал, что должен указать на это на всякий случай.

РЕДАКТИРОВАТЬ 2: Код, который у меня был до моего второго редактирования для моего вычисляемого столбца, не рассчитывал должным образом просроченные дни после проблема была помечена как "закрытая". Вставил обновленный код. Последняя часть кода не имеет смысла, так как здесь та же логика, что и в начале, но она сработала, поэтому я не хотел рисковать! :)

Мир.

Код, который у меня был до второго редактирования вычисляемого столбца, не рассчитывал должным образом просроченные дни после того, как проблема была помечена как «закрытая». Вставил обновленный код. Последняя часть кода не имеет смысла, так как здесь та же логика, что и в начале, но она сработала, поэтому я не хотел рисковать! :)

Мир.

Код, который у меня был до второго редактирования вычисляемого столбца, не рассчитывал должным образом просроченные дни после того, как проблема была помечена как «закрытая». Вставил обновленный код. Последняя часть кода не имеет смысла, так как здесь та же логика, что и в начале, но она сработала, поэтому я не хотел рисковать! :)

Мир.

0
ответ дан 4 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

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