读书人

Linq中怎么取出每个用户的符合条件的第

发布时间: 2011-12-24 23:03:24 作者: rapoo

Linq中如何取出每个用户的符合条件的第一条记录?
Linq中如何取出每个用户的符合条件的第一条记录?

数据库有以下几个字段:
主键 用户id 名次 时间 是否正常
1 100 10 20101012 1
2 100 20 20101009 1
3 200 11 20101011 1
4 100 18 20101008 1
5 300 2 20101010 1
6 300 15 20101013 1
7 300 16 20101002 0
我要得到这样的结果:
100 18 20101008
200 11 20101011
300 2 20101010
请问这个用Linq怎么实现??

[解决办法]
根据时间排序
db.Tb
.OrderByDescending(x=> x.时间)
.group ...
.FirstOrDefault();
[解决办法]
什么条件啊??
[解决办法]

C# code
  static void Main(string[] args)        {            var list = GetData();            var query =                    from u in list                    where u.IsNormal == "1"                    group u by u.UserId into g                    orderby g.Key                    from u2 in g                    where u2.Date == g.Min(u3 => u3.Date)                    select u2;            foreach (var u in query)                Console.WriteLine("{0}, {1}, {2}", u.UserId, u.Date, u.Rank);                        Console.Read();        }        static IEnumerable<User> GetData()        {            yield return new User { UserId = "100", Rank = "10", Date = "20101012", IsNormal = "1" };            yield return new User { UserId = "100", Rank = "20", Date = "20101009", IsNormal = "1" };            yield return new User { UserId = "200", Rank = "11", Date = "20101011", IsNormal = "1" };            yield return new User { UserId = "100", Rank = "18", Date = "20101008", IsNormal = "1" };            yield return new User { UserId = "300", Rank = "2", Date = "20101010", IsNormal = "1" };            yield return new User { UserId = "300", Rank = "15", Date = "20101013", IsNormal = "1" };            yield return new User { UserId = "300", Rank = "16", Date = "20101002", IsNormal = "0" };        } 


[解决办法]
还少个User的类定义。

C# code
    public class User    {        public string UserId { get; set; }        public string Rank { get; set; }        public string Date { get; set; }        public string IsNormal { get; set; }    }
[解决办法]
使用Where()和First()运算符的组合运算,在Where()运算符中指定查询条件。第二种做法就是只使用First()运算符,将查询条件作为参数传递给此方法。有疑问,继续留言!
[解决办法]
C# code
 public class User { public string UserId { get; set; } public string Rank { get; set; } public string Date { get; set; } public string IsNormal { get; set; } }
[解决办法]
XXX类型 en=lst.First();
好象成吧.

[解决办法]
我也有点犯晕 来看看
[解决办法]
学习了 先分组 后按时间排序
[解决办法]
入门学linq看这里:http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
[解决办法]
linq是什么??

读书人网 >.NET

热点推荐