SELECT Call_Date,Call_Address FROM SuspectCallList AS t WHERE NOT EXISTS ( SELECT 1 FROM SuspectCallList WHERE SPID = t.SPID AND CONVERT(VARCHAR(8) , Call_Date ,112) = CONVERT(VARCHAR(8) , t.Call_Date , 112) AND Call_Date < t.Call_Date )order by Call_Date
为了取数据库中每一天的第一条和最后一条记录,如果能直接用lambda表达式或者linq语句更好,新人求解!
List<Product> products = GetProductList(); var categoryCounts = from prod in products let gDate=prod.Call_date.toShortDateString() group prod by gDate into prodGroup select new { Call_date = prodGroup.Key, ProductFirst = prodGroup.First(),ProductLast = prodGroup.Last() };
用Group对日期分组,然后再取数据,比你这个写的要简单些。
linq:先取出数据放到list中,然后按插入时间排序下,再加个条件必须是今天的数据,然后分别取第一条和最后一条。
WebForm写了一个Demo,你看下吧!希望对你有帮助。
1 protected void Page_Load(object sender, EventArgs e) 2 { 3 List<UserInfo> userlist = new List<UserInfo>(); 4 UserInfo userinfo1 = new UserInfo() { InsertDate=Convert.ToDateTime("2016-11-2 7:33")}; 5 UserInfo userinfo2 = new UserInfo() { InsertDate=Convert.ToDateTime("2016-11-2 7:34")}; 6 UserInfo userinfo3= new UserInfo() { InsertDate=Convert.ToDateTime("2016-11-2 7:35")}; 7 UserInfo userinfo4 = new UserInfo() { InsertDate = Convert.ToDateTime("2016-11-3 7:35")}; 8 userlist.Add(userinfo2); 9 userlist.Add(userinfo1); 10 userlist.Add(userinfo3); 11 userlist.Add(userinfo4); 12 13 DateTime today= DateTime.Now;
//这里是你想要的答案 14 UserInfo userinfoGetFirstone = userlist.Where(x => x.InsertDate.ToString("yyyy-MM-dd") == today.ToString("yyyy-MM-dd")).ToList().OrderBy(x => x.InsertDate).FirstOrDefault(); 15 UserInfo userinfoGetLastone = userlist.Where(x => x.InsertDate.ToString("yyyy-MM-dd") == today.ToString("yyyy-MM-dd")).ToList().OrderBy(x => x.InsertDate).LastOrDefault(); 16 } 17 public class UserInfo 18 { 19 public DateTime InsertDate { get; set; } 20 } 21 }
这样只能取出一条数据吧,我要的是每一天的两条数据,加的这个条件是什么意思?
@唐宋元明清丶: userinfoGetFirstone、userinfoGetLastone 这不是两条数据?看不懂的话可以说出来的,麻烦您Debug看下结果。 加的条件是:过滤掉不是今天的数据
@IT民工-杰: 我运行过你的demo了,但是你可能没有明白我的意思,你这个运行出来获取的是按日期排序的第一条和最后一条数据,如果有两天,那我第一天晚上的数据和第二天早上的数据呢?
@唐宋元明清丶: 大兄弟,你的需求到底是不是取每天的第一条和最后一条?假如你今天去取今天和昨天插入的数据,为什么会有昨天晚上的数据?过滤条件是直接比较天,不考虑时、分、秒的。Where(x => x.InsertDate.ToString("yyyy-MM-dd") == today.ToString("yyyy-MM-dd"),不明白可以再交流。。。
@IT民工-杰: 不是每天取每天的数据,我要取数据库里的以前的每天早上第一条和晚上第一条,插入的新数据暂时不考虑,是我之前表达不清楚,大兄弟贱笑了。。
@唐宋元明清丶: 那再按天分组啊
@IT民工-杰: Call_Date字段就是天啊,年月日时分秒都在这个字段里
@唐宋元明清丶:
1 var userinfoGet= (from Userinfo in userlist 2 let Day = Userinfo.InsertDate.Day 3 orderby Userinfo.InsertDate 4 group Userinfo 5 by Day into userinfoGroup 6 select new { UserFirst = userinfoGroup.First(), UserLast = userinfoGrup.Last() }).ToList();
再试下这段吧!送你一句话:清晰无歧义地表达问题,会事半功倍!
@IT民工-杰: 好的!谢谢大哥!
你需要一个工具:LinqPad,这三种写法随便转
我试过了,sql语句放上面点 lambda是空白的