C# 模型未按预期工作C

C# 模型未按预期工作C,c#,model,mapping,dapper,C#,Model,Mapping,Dapper,我的模型得到了我需要的数据,但我不确定如何以我需要的方式组织它。我有一个模型拉着一个团队和一个球员。问题是当我将数据映射到模型时,它给了我重复的团队,并且不允许我单独调用玩家。基本上,我为每个球员都有一个新对象,但我希望每个球队都有一个新对象,并且没有重复的对象。我还希望每个球队都有一个球员的财产,我可以拉一个人的球员 这是我到目前为止所拥有的 现行方法 总之,我需要它返回一个对象来检查数据,看看团队是否重复。如果是,则将该玩家添加到当前存在的团队中。如果是新团队,则创建团队,并添加玩家 在vi

我的模型得到了我需要的数据,但我不确定如何以我需要的方式组织它。我有一个模型拉着一个团队和一个球员。问题是当我将数据映射到模型时,它给了我重复的团队,并且不允许我单独调用玩家。基本上,我为每个球员都有一个新对象,但我希望每个球队都有一个新对象,并且没有重复的对象。我还希望每个球队都有一个球员的财产,我可以拉一个人的球员

这是我到目前为止所拥有的

现行方法

总之,我需要它返回一个对象来检查数据,看看团队是否重复。如果是,则将该玩家添加到当前存在的团队中。如果是新团队,则创建团队,并添加玩家

在visual studio中执行时,存储过程返回什么

它返回一个如下所示的表

罗维德球员-球队 1-罗伊-孟加拉 2-尼克-孟加拉 3-jeff-browns
4-carl-steelers

根据对您问题的评论,我认为以下内容可能会有所帮助。然而,作为记录,这些都不是最佳实践,我不能专业地推荐其他人这样做。但它解决了你所面临的约束问题

如果您只想获得没有重复的团队列表,可以执行以下操作:

List teams=myHashSet.Selectx=>x.team.Distinct.ToList

这将返回一个不同的团队列表。基本上,如果你想得到一个单独的团队,并且只需要通过一个玩家,你必须在建立了HashSet之后手动通过它


编辑:问题本身下方评论中的一些信息已被删除,或者我无法看到它们!但是alphamalle确实提到他们没有修改存储过程的权限,因此我采用了上面的方法

我建议你回顾一下你的模型结构

public class Team
{
    public string Name { get; set; }
    public List<string> Players { get; set; }
}

我猜这不是从实际应用程序中复制粘贴的,因为代码中存在大量错误,这意味着它无法编译。例如,下面的行:myHashset.Addplayer;玩家来自哪里?它不存在于当前范围中。我想你是想加入我的玩家?不,不是。很抱歉我现在身上没有密码,只是去免费使用。我周末要出城,但是如果我可以远程访问我的网络,我想尝试在周一之前完成这项工作。除了编辑更正标点符号之外,这应该可以编译。我正在使用Dapper作为ORM。如果有什么影响的话。感谢您的帮助。听起来像是linq问题,而不是您的模型的问题。从您描述的问题,我猜问题在于您的存储过程,而不是这里的代码。尝试在数据库上单独运行存储过程,以查看它返回的数据。@GaryEmery我添加了一个编辑,以显示存储过程在management studio中执行时将返回的数据。我将尽快尝试此操作,然后回来告诉所有人它是否解决了我的问题。这将帮助您解决问题。如果您需要的是一个团队列表,然后是该团队中的球员列表,那么您可能需要将您的球员类中的球员属性设置为一个列表,以便您可以添加返回的所有球员,而不仅仅是一名球员。我确实尝试了一个列表,但由于某些原因,visual studio在执行此操作时无法编译。在尝试添加到当前存储对象的列表时,可能是我弄乱了上下文@GaryEmeryPhil的答案是你问题的完整答案。我的只会给你一个独特的团队列表。这正是我要寻找的,逻辑是有道理的。然而,在我实现它之后,我得到了0个团队。调试时,我可以看到所有东西都映射到了它应该映射的位置,但是代码从来没有命中else语句,也从来没有将团队添加到团队列表中。您的players变量中是否确实有项目?听起来你的循环没有被迭代,我修正了。它只需要添加到for each循环中的列表中。我建议对答案进行编辑,以供将来查看此帖子的人使用。
public class Player
{
    public string team { get; set; }
    public string player { get; set; }

}
public class Team
{
    public string Name { get; set; }
    public List<string> Players { get; set; }
}
List<Team> teams = new List<Team>();

foreach (var record in players)
{
    Team team = teams.SingleOrDefault(q=>q.Name == record.team);

    if(team == null)
    {
         team = new Team();
         team.Name = record.team;
         team.Players = new List<string>();
         team.Players.Add(record.player);
         teams.Add(team);
    }
    else
    {
        team.Players.Add(record.player);
    }       
}
return teams;