У меня есть список объектов, которые в этом случае являются налоговыми формами. List<TaxForm>();
Теперь части этих форм должны иметь ту же информацию, что и некоторые из свойств. Все они происходят от одного и того же клиента. Как я могу посмотреть на все налоговые формы в списке и проверить, не являются ли какие-либо свойства say RecordB? Если это так, мне нужно отметить несоответствия. Я не мог придумать, как это сделать, используя лямбда-выражения. Так, например, все BRCORD для каждого TaxForm должны иметь одинаковое значение для PayerName.
var hasConflict = taxForms.Where(tf => tf.PayerName != priorTaxForm).Count > 0;
Я пытаюсь придумать такой способ, если это возможно. Если нет, я думаю, что я мог бы перебирать список и сравнивать текущий с предыдущей формой, а если отличается, то есть различия. Просто кажется плохим. Заранее спасибо!
Пример того, что я пытаюсь выполнить, но более стабильным образом, заключается в следующем:
var forms = jobObject.TaxForms;
string payerName = forms[0].ARecord.PayerName;
bool hasConflict = !forms.TrueForAll(tf => tf.ARecord.PayerName == payerName);
Прошу прощения за любые опечатки. Больной, чем собака прямо сейчас, и лечит, работая из дома... Бла.
Исходя из ответа на тростник, я думаю, что это то, что лучше всего подходит для моего решения и сценария. Будет ли это не очень хорошо:
Вот что я сделал с благодарностью Рида. Это был совсем другой сценарий, но в итоге я использовал подобную концепцию, чтобы соответствовать потребностям моей нынешней логики.
forms.TrueForAll(t => forms[0].ARecord.PayerName == t.ARecord.PayerName);
Фактически видимое описание проблемы:
ПРИМЕЧАНИЕ * ТОЛЬКО НЕСКОЛЬКО СВОЙСТВ, КОТОРЫЕ МОГУТ БЫТЬ ТАКИМ ИМЯ В ВСЕХ ФОРМАХ. НЕ ВСЕ СВОЙСТВА. СО ПРОВЕРЬТЕ В СПИСОКЕ, ЕСЛИ PROPERTYA, PROPERTYB ИЛИ PROERTYC ИМЕЮТ КОНФЛИКТ, КОГДА СОБСТВЕННОСТЬ D, E, F, ЭТО НЕ СОБИРАЕТСЯ. ТАК СОКРАЩАЮЩИЕСЯ ФОРМЫ БЛАГОДАЛИ, КАК КОНФЛИКТ, ПОТОМУ ЧТО ОНИ ПЕЙТЕРЫ ИМЯ ДОЛЖНЫ ВСЕГДА БЫТЬ ОДНОЙ. ОНИ ОТ ОДНОЙ КОМПАНИИ.
Форма ID: 1099R Имя плательщика: Некоторые кредитные организации Присоединиться: 01/12/2015 Номер формы: 1098 Наименование плательщика: Some Credit UnionForm Дата добавления: 01/20/2015 Форма
ID: 1099INT Имя плательщика: другое имя, поэтому данные флага SubmitDate: 05.01.2012
Вы можете использовать Enumerable.Zip
для объединения списков вместе.
var conflicts = taxForm1.Zip(taxForm2, (one, two) => new {One = one, Two = two})
.Zip(taxForm3, (ot, three) => new {ot.One, ot.Two, Three = three})
.Where(f => f.One.PayerName != f.Two.PayerName || f.One.PayerName != f.Three.PayerName);
var hasConflicts = (taxForm1.Count != taxForm2.Count)
|| (taxForm1.Count != taxForm3.Count)
|| conflicts.Any();
Редактировать в ответ на комментарий:
Если вы просто проверяете, что все элементы в списке совпадают, вы можете:
// Note- requires at least one item in the list. Add checks if needed.
var hasConflicts = taxForm.Skip(1).Any(t => t.PayerName != taxForm[0].PayerName);
.NET 4.0
поздних версиях.