Обычно более простой способ вычисления стандартных частей даты - использование стандартных функций. Итак, я предлагаю использовать DATEPART в сочетании с ПРАВОЙ, чтобы у нас было два символа, начинающихся справа:
DECLARE @DT AS DATE = '2019-01-07'
SELECT CONCAT(year(@DT),
RIGHT('0'+CONVERT(VARCHAR(2), DATEPART(wk, @DT)), 2))
Первая вещь, которую необходимо знать, состоит в том, что, когда у Вас есть список с полем User / Group, необходимо знать о его типе. Когда у Вас есть один пользователь или группа в значении объекта, типом поля является SPFieldUserValue. Однако, если поле имеет многопользовательский / выбор группы, типом поля является SPFieldUserValueCollection.
Я предположу, что Ваше поле позволяет отдельному пользователю / у выбора группы и Вас уже есть следующие объекты:
SPSite site;
SPWeb web;
SPListItem item;
Теперь, мы проверим значение поля на пользователя / группа и получим список пользователей, независимых, из которого вида это (название поля является "Пользователями").
SPFieldUserValue usersField = new SPFieldUserValue(mainWeb, item["Users"].ToString());
bool isUser = SPUtility.IsLoginValid(site, usersField.User.LoginName);
List<SPUser> users = new List<SPUser>();
if (isUser)
{
// add a single user to the list
users.Add(usersField.User);
}
else
{
SPGroup group = web.Groups.GetByID(usersField.LookupId);
foreach (SPUser user in group.Users)
{
// add all the group users to the list
users.Add(user.User);
}
}
Я надеюсь, что это помогает Вам.
Спасибо,
Pedro José Batista
примечание: объект SPUser также может быть группой AD (то есть, объект SPUser может существовать для «DOMAIN \ Domain Users» ... поэтому объект SPUser также содержит свойство IsDomainGroup.
Из этой информации вы можете начать обход групп AD с помощью объектов SPPrincipalInfo ... однако это не всегда приятно.
Следует иметь в виду, что объект SPGroup включает свойство ContainsCurrentUser, которое может перемещаться по группам AD ... это предполагает, что у вас есть объект SPGroup, с которым можно работать.
Наслаждайтесь.
-Скотт