ASP.NET MVC中DB查询的不同值

时间:2014-09-08 13:11:49

标签: asp.net-mvc database model-view-controller

我正在尝试为从TRACK_INFO表返回的每个不同值创建一个按钮。我想要返回的专栏是collegeOf专栏。现在,我得到了表格中每一行的按钮,而不仅仅是不同的按钮。有人可以帮忙吗?我是使用asp.net mvc的新手。下面是我的控制器代码,它返回了TRACK_INFO表中的行。

// GET: /Tracks/
public ActionResult Index()
{
    var track_info = db.TRACK_INFO.Include(t => t.GRAD_CLEAR_SIG_DATE);
    return View(track_info.ToList());
}

2 个答案:

答案 0 :(得分:0)

您可以将Linq Distinct方法与自定义EqualityComparer一起使用(我在示例中假设collegeOf是一个字符串):

public class TrackInfoComparer : IEqualityComparer<TRACK_INFO>
{
    public bool Equals(TRACK_INFO x, TRACK_INFO y)
    {
        if (x.collegeOf == y.collegeOf) //etc...
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(Usuers obj)
    {
        return obj.IdUser.GetHashCode();
    }

}

允许您过滤不同的记录:

var track_info = db.TRACK_INFO.Include(t => t.GRAD_CLEAR_SIG_DATE).Distinct(new TrackInfoComparer);
return View(track_info.ToList());

答案 1 :(得分:0)

您需要使用GroupBy从列表中获取Distinct项目。

<强>代码:

public ActionResult Index()
{
    var track_info = db.TRACK_INFO.Include(t => t.GRAD_CLEAR_SIG_DATE);

    //Check the below code
    return View(track_info.ToList().GroupBy(x => x.collegeOf).Select(y => y.First()));
}

可以找到参考here