C# LINQ选择查询问题

C# LINQ选择查询问题,c#,linq-to-sql,C#,Linq To Sql,我拥有以下实体: 卡通故事 卡通形象 性 卡通故事由一个或多个卡通人物讲述,卡通人物的性别为男性或女性 例如,当我的网站的用户是女性时,我只想检索有性别女性的卡通形象(如果有的话)。如果不是这种情况,则取而代之的是男性卡通形象 所以我得到了一个卡通故事;检查下方是否有女性卡通形象;如果没有,给男性卡通形象代替 我怎样才能在林克做到这一点。特别是,如果雌性动物存在,则该部分会带走它们,如果不带走雄性的话 提前谢谢 马丁很简单。通过此代码,为您的CartonStory模型创建一个部分 事情很清楚。我

我拥有以下实体:

卡通故事

卡通形象

卡通故事由一个或多个卡通人物讲述,卡通人物的性别为男性或女性

例如,当我的网站的用户是女性时,我只想检索有性别女性的卡通形象(如果有的话)。如果不是这种情况,则取而代之的是男性卡通形象

所以我得到了一个卡通故事;检查下方是否有女性卡通形象;如果没有,给男性卡通形象代替

我怎样才能在林克做到这一点。特别是,如果雌性动物存在,则该部分会带走它们,如果不带走雄性的话

提前谢谢


马丁很简单。通过此代码,为您的CartonStory模型创建一个部分

事情很清楚。我非常喜欢将代码分解成更小、易于识别的部分。是的,如果发现女性,这将作为一个或两个查询发送到数据库;另外两个

不要这样做


一句话并不是他们所说的全部

IEnumerableCfig=CartoonFigure.OrderByW=>W.Sex==Female?1 : 100;


如果先按雌性然后按雄性点菜。。。因此,如果有任何女性,你会首先得到它。

在不了解任何课程细节的情况下,以下几点应该是有效的:

private static IEnumerable<CartoonFigure> GetFigures(CartoonStory story, Sex preferredSex)
{
    var result = story.StoryTellerFigures.Where(cf => cf.Sex == preferredSex);
    if (!result.Any())
    {
        result = story.StoryTellerFigures;
    }
    return result;
}

换言之;从故事中筛选出具有首选性别的说书人。如果找不到,只需返回故事中的所有故事讲述者人物,他们将是异性。

我更想的是一个涉及linq到sql查询的解决方案。这不可能吗?添加了一个线性版本。不过,不要这样做。我更多考虑的是一个涉及一个linq到sql查询的解决方案。这不可能吗?只是将其更改为1 LINQ查询。OP只需要与性别匹配的结果(如果有的话)。如果没有,则返回异性的所有结果。你的团队是如何做到这一点的?您返回的所有结果都是按顺序排列在顶部的。我更想的是一个涉及一个linq到sql查询的解决方案。这不可能吗?
var figures = dataContext.CartoonStories.Where(c => c.Id == 1).FemalesThenMales; 
var figures = dataContext.CartoonStories.Where(c => c.Id == 1).CartoonFigures.Any(c => c.Sex == "Female") ? dataContext.CartoonStories.Where(c => c.Id == 1).CartoonFigures.Where(c => c.Sex == "Female") : dataContext.CartoonStories.Where(c => c.Id == 1).CartoonFigures.Where(c => c.Sex == "Male");
private static IEnumerable<CartoonFigure> GetFigures(CartoonStory story, Sex preferredSex)
{
    var result = story.StoryTellerFigures.Where(cf => cf.Sex == preferredSex);
    if (!result.Any())
    {
        result = story.StoryTellerFigures;
    }
    return result;
}