两个List属性,无法使用LINQ创建列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个List属性,无法使用LINQ创建列表相关的知识,希望对你有一定的参考价值。
我不确定如何通过类中的两个列表属性进行选择:
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();
答案
您可以使用Enumerable.Zip
函数组合两个List
s:
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();
以上是关于两个List属性,无法使用LINQ创建列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用LINQ C#将一些属性的值从一个列表更改为另一个列表:
LINQ Group使用Lambda通过两个对象属性和SUM,AVG或忽略其他对象属性