两个List属性,无法使用LINQ创建列表

问题描述 投票:1回答:1

我不确定如何通过类中的两个列表属性进行选择:

public class AddAssignMealView
{
    public int TraineeID { get; set; }
    public List<int> MealID { get; set; }
    public List<string> Day { get; set; }
}

并创建一个list(),其中包含一个TraineeID,一个MealID和一天。我设法用MealID列表(下面)来做,但是当我添加Day列表时,我不确定该做什么。有任何想法吗?

AddAssignMealView mealtraiDeserializeObject = JsonConvert.DeserializeObject<AddAssignMealView>(mealTrainee);

                meals = mealtraiDeserializeObject.MealID.Select(x => new MealTrainee()
                {
                    TraineeID = mealtraiDeserializeObject.TraineeID,
                    MealID = x
                }).ToList();
c# asp.net linq asp.net-web-api entity-framework-6
1个回答
2
投票

您可以使用Enumerable.Zip函数组合两个Lists:

var ans = mealtraiDeserializeObject.MealID.Zip(mealtraiDeserializeObject.Day, (m, d) => new {
    mealtraiDeserializeObject.TraineeID,
    MealID = m,
    Day = d
}).ToList();

您也可以使用Enumerable.Select的(很少提到的)两个参数版本,但我不认为效率的微小改进值得(IMO)可读性的降低:

var ans = mealtraiDeserializeObject.MealID.Select((m, i) => new {
    mealtraiDeserializeObject.TraineeID,
    MealID = m,
    Day = mealtraiDeserializeObject.Day[i]
}).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.