C#EF Lambda选择功能

时间:2017-04-13 09:20:25

标签: c# entity-framework lambda

是否可以在lambda select语句中添加一个函数? 这是完全错误的语法,但它是出于演示目的。

var test = _context.SomeDatabaseTable
            .Select(c => new SomeViewModel
            {
                AssignedUsers = {
                    foreach (var item in c.AssignedToUserIDs.Split(';').ToList()) {

                        //SOME CODE

                    }
                }
            });

任何人都知道我之后是否有必要循环结果?

1 个答案:

答案 0 :(得分:2)

您无法这样做的原因是因为Select()查询实际上并未针对数据库执行查询,因此EntityFramework会尝试将该C#代码转换为SQL,这显然可以& #39;吨

您可以在致电ToList()之前致电Select()来执行查询。

var test = _context.SomeDatabaseTable
                   .ToList()
                   .Select(c => new SomeViewModel
                   {
                       AssignedUsers = c.AssignedToUserIDs.Split(';')
                   });   

这有其自身的问题,如果您在执行ToList()之前没有正确过滤查询,您将开始遇到性能问题,这会随着数据库大小的增加而变得更糟。

您使用foreach循环尝试的内容也无效。它甚至不应该编译,所以删除它并使用我上面显示的内容,我假设AssignedUsers属性属于' List',如果你想修改单个元素' ;已被拆分,您可以将另一个Select()方法链接到Split()

的末尾