使用C#中的LINQ将对象数组转换为另一个

时间:2017-11-06 16:46:59

标签: c# arrays entity-framework linq object

我有以下代码行。

List<ModelsView> ModelsData

ModelsData= (from l1 in data
             select new ModelsView()
             {
                 Id = l1.Id, 
                 Name = l1.Name,
                 Age = l1.Age,
                 AgePlusTen = Age+ 10                                   
             }).OrderBy(i => i.PortiaId).ToList();

她可以看到,我正在使用linq将数据转换为ModelsData。我没有遇到任何问题。当我添加'AgePlusTen'字段时,只会出现问题。在这里,我正在做Age + 10,而Age是在此之前添加的一个字段。它不允许我做Age + 10。

它说Age在当前环境中不存在。谁能告诉我如何添加字段并根据之前添加的字段操作它们

2 个答案:

答案 0 :(得分:1)

编译器回答了你的问题。不,你不能。

为什么你不能只使用AgePlusTen = l1.Age+ 10?应该可以正常工作。

答案 1 :(得分:1)

List<ModelsView> ModelsData

ModelsData= (from l1 in data
             let agePlusTen = l1.Age + 10 // add this
             select new ModelsView()
             {
                 Id = l1.Id, 
                 Name = l1.Name,
                 Age = l1.Age,
                 AgePlusTen = agePlusTen // use it here                         
             }).OrderBy(i => i.PortiaId).ToList();

let允许您存储子表达式的结果。它甚至可以用于定义本身可以查询的可枚举类型。

您可以在此处找到更多相关信息:link