gpt4 book ai didi

c# - LINQ查询中的竞赛条件

转载 作者:行者123 更新时间:2023-12-03 19:25:00 25 4
gpt4 key购买 nike

我的比赛条件如下。 select miIds.ItemId不会等待allItemList数据库调用完成返回所有结果。解决该问题的最佳方法是什么?我应该将查询从任务中拉出并等待其返回,然后再开始查询,还是我可以在查询中做一些事情来使其等待?
谢谢。

    private async Task LoadData()
{
// Query Mission_Item Ids.
var missionItemsList = await App.Database.GetTableAsync<Mission_Items_Model>();
var missionItemIds = from missionItem in missionItemsList
where missionItem.MissionId == game.CurrentMissionId
select missionItem;

// Query All Items, select item where item's itemIds match mission's itemIds.
var allItemList = await App.Database.GetTableAsync<ItemModel>();
var items = from item in allItemList
let mi = (from miIds in missionItemIds where miIds.ItemId == item.Id select miIds.ItemId)
where mi.Contains(item.Id)
select item;

// Item list for mission.
ItemsList = new List<ItemModel>(items);

...

}

最佳答案

您的问题很简单,这是由于使用var导致隐藏了查询missionItemIds未被枚举所致。要使该查询实际执行,您需要使用一个实现该序列的调用(例如,.ToList()):

var missionItemIds = (from missionItem in missionItemsList
where missionItem.MissionId == game.CurrentMissionId
select missionItem).ToList();


在实际实现结果时, game.CurrentMissionId似乎正在改变。

关于c# - LINQ查询中的竞赛条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com