你好,我有一个这样的表=>
stateID requestNo reqStateID reqStateDate
1 1 13 03.01.2012 10:57
2 1 3 03.01.2012 10:58
3 2 3 03.01.2012 11:14
4 2 3 03.01.2012 11:15
5 1 5 03.01.2012 22:28
6 1 7 05.01.2012 14:54
7 3 3 05.01.2012 14:55
Run Code Online (Sandbox Code Playgroud)
我需要得到,最后添加(reqStateDate)唯一的请求否(requestNo).我试过这样的东西,但它不起作用..
public List<ReqStates> GetRequests(int reqStateID)
{
return (from rs in db.ReqStates
where rs.reqStateID== reqStateID
orderby rs.reqStateDate descending
select rs).Distinct().ToList();
}
Run Code Online (Sandbox Code Playgroud)
如果参数(reqStateID)为3,我必须得到2个请求.requestNo = 2和requestNo = 3.因为,请求的reqstateID都是3,并且它们的添加日期是最新的.RequestNo = 1 =>最后添加的状态是13.这就是它(1)不应该来的原因.
我希望有人可以帮助我,并展示一个简单的方法.
你必须告诉Distinct
它应该区分值的属性.如果未指定任何内容,则将使用默认的相等比较器来区分值.
你有两个选择:
IEqualityComparer
给不同的.IEquatable
上ReqStates
.例:
class ReqStatesComparer: IEqualityComparer<ReqStates>
{
public bool Equals(ReqStates a, ReqStates b)
{
return a.requestNo == b.requestNo;
}
public int GetHashCode(ReqStates rs)
{
return rs.GetHashCode();
}
}
public List<ReqStates> GetRequests(int reqStateID)
{
return (from rs in db.ReqStates
where rs.reqStateID== reqStateID
orderby rs.reqStateDate descending
select rs).Distinct(new ReqStatesComparer()).ToList();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9875 次 |
最近记录: |