Я видел несколько примеров того, как сравнивать в Linq с помощью оператора Except и сравнения, но все они, казалось, показывали, как это делается с помощью двух простых типов или одного простого типа и одного комплекса. У меня есть два списка разных типов, мне нужно выбрать результат на основе дочернего свойства, а затем выбрать другую группу, в которой свойства соответствуют, а DateTime
- новее. Может ли кто-нибудь помочь мне в этом?Сравнение LINQ между двумя типами списка дочерних объектов?
public class Parent
{
public List<Child> ChildList;
}
public class Child
{
public string FoodChoice;
public DateTime FoodPick;
}
public class Food
{
public string FoodName;
public DateTime FoodPick;
}
public void FoodStuff
{
var parent = new Parent();
var childList = new List<Child>();
childList.Add(new Child {FoodChoice="a",DateTime=.....
childList.Add(new Child {FoodChoice="b",DateTime=.....
childList.Add(new Child {FoodChoice="c",DateTime=.....
parent.ChildList = childList;
var foodList = new List<Food>();
foodList.Add......
var childrenWithNoMatchingFoodChoices = from ufu in Parent.ChildList where !Parent.ChildList.Contains (foodList.FoodName)
var childrenWithMatchingFoodChoicesButWithNewerFoodPick = from foo in Parent.ChildList where Parent.ChildList.FoodPick > foodList.FoodPick
}
Я пытаюсь выяснить, как получить List<Child>
для childrenWithNoMatchingFoodChoices
. Я пытаюсь выяснить, как получить List<Child>
для childrenWithMatchingFoodChoicesButWithNewerFoodPick
Помощь? Использование .NET Framework 4.0.
Спасибо.
foodList содержит последовательность и не может предоставить свойство FoodPick, например, экземпляр. Вы должны указать, какой из них вы хотите сравнить. –
Я не уверен, о чем вы просите. Вместо этого типа C# -кода с ручным управлением вы можете написать REAL C#, который действительно компилируется. Затем добавьте несколько утверждений или что-то еще, чтобы мы могли точно увидеть, что сделает ваш код работать. В принципе, напишите нам единичный тест, а затем мы попытаемся его пропустить. Это «.....» заставляет нас (по крайней мере, меня) угадать, что вы пытаетесь сделать. – aquinas