[英]Linq Where clause returns everything even though I am filtering out a condition
我正在使用 c# 和 SolrNet 返回游戲玩家正在玩的游戲列表。
在我的 c# 代碼中,我試圖返回PlayerHistory
的數據,其中IsPlaying
為真。
數據庫有一個 Players 表,其中包含IsPlaying
的位列(0 表示 false,1 表示 true)。
這是我的代碼:
var nodes = GetGamerNodes().Select(MapNode);
Solr.AddRange(nodes);
Solr.Commit();
private static SearchNodes MapNode(GameList node)
{
return new SearchNodes {
Id = node.Id.ToString(),
GameTitle = node.Title,
Story = node.Story,
Published = node.Game.Published,
PlayerHistory= node.Players.Where(e => e.Player.Current.IsPlaying).Select(e => e.Player.Name).ToArray()
};
}
PlayerHistory
是一個ICollection
在我的模型中, IsPlaying
是這樣定義的:
public virtual bool IsPlaying { get; set; }
但無論IsPlaying
的值如何,它都會返回所有內容的PlayerHistory
數據。
難道我做錯了什么?
謝謝!
這里有一個小技巧,在這樣的時候幫助了我。
對我有用的是做一個這樣的臨時謂詞:
bool debugGetIsPlayerPlaying(Player player)
{
return player.Current.IsPlaying;
}
然后當你做這個替換時......
private static SearchNodes MapNode(GameList node)
{
return new SearchNodes
{
Id = node.Id.ToString(),
GameTitle = node.Title,
Story = node.Story,
Published = node.Game.Published,
PlayerHistory = node.Players.Where(e => debugGetIsPlayerPlaying(e.Player)).Select(e => e.Player.Name).ToArray()
};
}
...它為您提供了一些可以設置斷點並逐步執行的內容,以幫助您准確確定失敗的 Linq 查詢中發生了什么。 希望這有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.