Как сделать условие в лямбда-выражении при присваивании значения - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь присвоить значение своему предмету, но мне нужно поставить условие, потому что идентификатор меняется в зависимости от языка.

Expression<Func<ListItem, object>>[] fieldsToRetreive 
    = new Expression<Func<ListItem, object>>[] {
        item => item["A"], //
        item => item["B"], //
        item => item["C"], //
        item => item["D"], //
        item => item["E"], //
        item => item["F"], //
        item => item["G"], //
        item => item["H"],
    },

Я пытаюсь сделать что-то похожее на это:

item => if(item["I"] != null){item=>item["I"]}else{item=>item["J"])

ОБНОВЛЕНИЕ: Вот еще код функции

private List<ListItem> FindItemsWithContentType(List list, string contentTypeId, DateTime? notOlderThan = null)
        {
            DateTime searchDate = new DateTime(1990, 01, 01);

            if (notOlderThan.HasValue && notOlderThan.Value.Date == DateTime.Today)
                searchDate = notOlderThan.Value.AddDays(-1); // Sharepoint does not take time into account, so we roll back to yesterday if today
            else
                notOlderThan = searchDate;
            string date = DateTime.SpecifyKind(searchDate, DateTimeKind.Utc).ToString("yyyy-MM-ddTHH:mm:ssZ"); // could also be like: "<Today OffsetDays=\"-7\" />"

            CamlQuery query = new CamlQuery()
            {
                ViewXml = string.Format("<View><Query><Where><And><BeginsWith><FieldRef Name='ContentTypeId' /><Value Type='ContentTypeId'>{0}</Value></BeginsWith><Gt><FieldRef Name='Modified' /><Value Type='DateTime'>{1}</Value></Gt></And></Where></Query></View>", contentTypeId, date)
            };

            ListItemCollection items = list.GetItems(query);

            Expression<Func<ListItem, object>>[] fieldsToRetreive = new Expression<Func<ListItem, object>>[] {
                                                                                                                item => item["A"],                                                                                                                 item => item["B"],                                                                                                               item => item["C"],                                                                                                             item => item["D"],                                                                                                              item => item["E"],                                                                                                                item => item["F"],                                                                                                               item => item["G"],                                                                                                                 item => item["H"],                                                                                                            item => item["I"] ?? item["J"]
                                                                                                                                                                                                                            };


            // Making sure we load the content of the item fields
            this.AppOnlyContext.Load(items, i => i.Include(fieldsToRetreive));
            this.AppOnlyContext.ExecuteQuery();
...