日期:2014-05-20  浏览次数:20789 次

求一条Linq语句
表结构如下:

create table Privates (
   pmID                 char(12)             not null,
   sUserID              char(7)              null,--发送用户名
   rUserID              char(7)              null,--接受用户名
   pmBody               nvarchar(max)        null,
   sTime                datetime             null,--发送时间
   constraint PK_PRIVATES primary key (pmID)
)


我想得到的结果集是,在接受用户确定的情况下,每一个发送用户对接受用户发送信息中的时间最晚的那条记录
该怎么写Linq语句呢
------解决方案--------------------
嗯。由于你没有说明你通过什么Linq provider来执行,所以这里主要是针对Linq to object而言的。许多provider,例如所谓的EF之类的,并不支持所有linq语法。

由于你空谈一个“表结构”,所以我怀疑你并没有使用linq to object。

如果不支持全功能的linq,那么你往往就需要“绕道”写代码。例如
var query1 = (from x in list
                select x.sUserID).Distinct();
var query2 = from x in query1
                let y = (from z in list
                        where z.sUserID == x
                        orderby z.sTime
                        select z).Last()
                select y;

等等。

这里有一个知识点:如果你不是linq to object,那么就要先说明到底是什么linq provider,不要空谈“linq”这个词儿以免误会。