簡體   English   中英

即使我正在過濾掉一個條件,Linq Where 子句也會返回所有內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM