Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除重复行mvc_C#_Sql_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 删除重复行mvc

C# 删除重复行mvc,c#,sql,asp.net-mvc,asp.net-mvc-4,C#,Sql,Asp.net Mvc,Asp.net Mvc 4,我有这个方法 会议是一门课程 与会者是会议 课程 public partial class Meeting { public Meeting() { this.Attendees = new List<Attendees>(); } public virtual ICollection<Attendees> Attendees{ get; set; } [...] 目标是删除表中具有相同

我有这个方法

会议
是一门课程
与会者
会议

课程

public partial class Meeting
    {

        public Meeting()
        {
            this.Attendees = new List<Attendees>();
        }

public virtual ICollection<Attendees> Attendees{ get; set; }
[...]
目标是删除表中具有相同用户名的重复与会者。
但当前的方法是删除所有记录并保留副本

哪里出错了?

因为我可以看到您按名称对元素进行了分组,并删除了最后一项。所以你移除了独特的元素。 像这样

 private void RemoveRowsDuplicated(Meeting model)
        {
             if (model.Attendees != null)
             {
                var temporaryAtendees = new List<Attendees>();
                foreach(var item in model.Attendees)
                {
                    if (temporaryAtendees.Contains(item))
                    {
                        context.Attendees.Remove(item);
                    }
                    else
                    {
                        temporaryAtendees.Add(item);
                    }
                }
                }
            }
private void已复制(会议模式)
{
如果(model.attendes!=null)
{
var temporaryAtendees=新列表();
foreach(模型中的var项。与会者)
{
if(临时索引包含(项目))
{
上下文。与会者。删除(项目);
}
其他的
{
临时性附录。添加(项目);
}
}
}
}

我可以看到您按名称对元素进行分组,并删除最后一项。所以你移除了独特的元素。 像这样

 private void RemoveRowsDuplicated(Meeting model)
        {
             if (model.Attendees != null)
             {
                var temporaryAtendees = new List<Attendees>();
                foreach(var item in model.Attendees)
                {
                    if (temporaryAtendees.Contains(item))
                    {
                        context.Attendees.Remove(item);
                    }
                    else
                    {
                        temporaryAtendees.Add(item);
                    }
                }
                }
            }
private void已复制(会议模式)
{
如果(model.attendes!=null)
{
var temporaryAtendees=新列表();
foreach(模型中的var项。与会者)
{
if(临时索引包含(项目))
{
上下文。与会者。删除(项目);
}
其他的
{
临时性附录。添加(项目);
}
}
}
}

方法的正确版本如下所示:

private static void RemoveRowsDuplicated(Meeting model)
        {
            if (model.Attendees != null)
            {
                var duplicates = new List<Attendees>();
                foreach (var item in model.Attendees.GroupBy(x => x.UserName).Where(x=>x.Count()>1))
                {
                    duplicates.AddRange(item.Skip(1));
                }
                duplicates.ForEach(x=>context.Attendees.Remove(x));
            }
        }
private static void已复制(会议模型)
{
如果(model.attendes!=null)
{
var duplicates=新列表();
foreach(model.attendes.GroupBy(x=>x.UserName)中的var项,其中(x=>x.Count()>1))
{
重复项。添加范围(项。跳过(1));
}
replicates.ForEach(x=>context.attendes.Remove(x));
}
}

方法的正确版本如下所示:

private static void RemoveRowsDuplicated(Meeting model)
        {
            if (model.Attendees != null)
            {
                var duplicates = new List<Attendees>();
                foreach (var item in model.Attendees.GroupBy(x => x.UserName).Where(x=>x.Count()>1))
                {
                    duplicates.AddRange(item.Skip(1));
                }
                duplicates.ForEach(x=>context.Attendees.Remove(x));
            }
        }
private static void已复制(会议模型)
{
如果(model.attendes!=null)
{
var duplicates=新列表();
foreach(model.attendes.GroupBy(x=>x.UserName)中的var项,其中(x=>x.Count()>1))
{
重复项。添加范围(项。跳过(1));
}
replicates.ForEach(x=>context.attendes.Remove(x));
}
}

您可以尝试编写原始SQL并通过EF调用,然后返回列表中的Attendeers对象

var query = "Select * from Attendees group by username";
var attendeesList = dbContext.Database.SqlQuery<Attendees>(query).ToList<Attendees>();
var query=“按用户名从与会者组中选择*”;
var attendeesList=dbContext.Database.SqlQuery(query.ToList();

您可以尝试编写原始SQL并通过EF调用,然后返回列表中的Attendeers对象

var query = "Select * from Attendees group by username";
var attendeesList = dbContext.Database.SqlQuery<Attendees>(query).ToList<Attendees>();
var query=“按用户名从与会者组中选择*”;
var attendeesList=dbContext.Database.SqlQuery(query.ToList();

是的,我知道你还有其他问题,我的答案与此无关是的,我知道你还有其他问题,我的答案与此无关我相信,这里已经回答了:我相信,这里已经回答了: