Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq to entity语句设置两个结果集?_C#_Entity Framework_Linq - Fatal编程技术网

C# 使用linq to entity语句设置两个结果集?

C# 使用linq to entity语句设置两个结果集?,c#,entity-framework,linq,C#,Entity Framework,Linq,目前我有一个linq to entity语句,它返回结果对象的页面列表。这些将传递到我的viewmodel,并在我的视图中使用和显示。 我可以在不运行linq查询两次的情况下设置viewmodel的第二个属性吗 这是我的一些代码 这是我获取事件的服务层。您可以看到我将所有事件设置为viewModel.SpaceEvents,但我还想设置viewModel.mapEvents,而无需运行linq查询两次 using (var dbContext = new MyContext())

目前我有一个linq to entity语句,它返回结果对象的页面列表。这些将传递到我的viewmodel,并在我的视图中使用和显示。 我可以在不运行linq查询两次的情况下设置viewmodel的第二个属性吗

这是我的一些代码

这是我获取事件的服务层。您可以看到我将所有事件设置为viewModel.SpaceEvents,但我还想设置viewModel.mapEvents,而无需运行linq查询两次

        using (var dbContext = new MyContext())
        {
            viewModel.SpaceEvents = (from u in dbContext.SpaceEvents
                orderby u.LocationPoints.Distance(location)
                where
                    (u.EventDateTime >= Date) &&
                    (u.LocationPoints.Distance(location) <= 8047)
                select new SpaceEventResult
                {
                    SpaceId = u.SpaceRefId,
                    // set all remaining the properties here
                }).ToPagedList(Page, 5);

             viewModel.mapEvents = (from u in dbContext.SpaceEvents
                     orderby u.LocationPoints.Distance(location)
                where
                    (u.EventDateTime >= Date) &&
                    (u.LocationPoints.Distance(location) <= 8047)
                select new MapEventResult
                {
                    // set just the map properties here
                }).ToList()
        }
        return viewModel;
使用(var dbContext=new MyContext())
{
viewModel.SpaceEvents=(来自dbContext.SpaceEvents中的u)
orderby u.LocationPoints.距离(位置)
哪里
(u.EventDateTime>=日期)&&
(u.LocationPoints.距离(位置)=日期)&&

(u.定位点.距离(位置)这意味着我不想再编写另一个linq to entity语句来获取另一个仅用于映射数据的对象列表。除了填充spaceEvents外,我还想填充mapObject列表!您能提供一个示例吗?我已经修改了我的原始问题MapEventResult不是SpaceEventResult的子集。它是SpaceEventResult中的另一个属性我试图达到的目标是让两个对象都填充相似的数据,这样一个可以传递给视图并使用,另一个可以传递给Javascript。我想我是想通过只将我需要的值传递到Javascript而不是SpaceEventResult来节省空间/时间/等,因为它将包含很多我的地图没有的数据不需要!
@model MyProject.ViewModels.Home.EventsViewModel

<script>
    var viewModelMapData = @Model.Events; // I don't want to pass all event data, just map data
</script>
public IPagedList<EventResult> Events { get; set; }
public IList<MapEventResult> MapEvents { get; set; }