一些LINQ查询仍然困扰着我.
对于包含两列,'Page'和'Date'的表'Hits',我想找到在定义的时间片段中具有最多行的页面.
在SQL中我会使用这个:
SELECT TOP 10
[Page]
,COUNT([Page]) as Number
FROM dbo.[Hits]
WHERE [Date] >= CONVERT(datetime,'14 Jan 2009')
AND [Date] < CONVERT(datetime,'15 Jan 2009')
Group BY [Page]
Order by Number DESC
Run Code Online (Sandbox Code Playgroud)
在LINQ我不知道如何处理这个问题,任何人都可以帮助我吗?我尝试使用linqer转换它,但它只显示此表达式的错误.
我有一个集合List<CustomClass>,我试图找到一种方法来返回一个字段,该字段对应于发生次数最多的另一个字段.我过去曾问过类似的问题,但我不确定如何将逻辑扩展到自定义类.例如.
我CustomClass有三个公共财产:
Title
Mid
Eid
Run Code Online (Sandbox Code Playgroud)
并且List<CustomClass> MatchedFeatures = List<CustomClass>();a循环填充.
我需要执行一个Linq操作来返回Mid具有最多相同数量的类的类Eid.所以我们正在计算相同的Eid列.
我试过用
var TopResult = MatchedFeatures.GroupBy(MatchedFeature => MatchedFeature).OrderByDescending(group => group.Count()).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
但它不会返回我想要的东西.
任何人都可以看到我错在哪里?我正在使用C#
这是上一个问题,似乎工作正常.现在如何在这种情况下扩展它......? C#中简单的LINQ问题
非常感谢,布雷特
我已经做了很多搜索似乎是一个简单的LINQ问题,但我无法弄清楚如何从具有指定最小值(或最大值)的集合中抓取一个对象而不采用这样的排序:
dim customers= GetCustomers()
dim youngest = (From c in customers
Order By c.age Ascending).ToList.First
Run Code Online (Sandbox Code Playgroud)
此(未经测试的代码)结构可正常工作,但必须对整个客户数组进行排序并将其放入列表中,以便仅提取第一个值.这不是获得最低限度的最佳方式!
请注意,在这种情况下我想要整个c记录,而不是像这样可以完成的客户的最小年龄(典型示例):
dim customers= GetCustomers()
dim youngest = (From c in customers
Select c.age).Min
Run Code Online (Sandbox Code Playgroud)
甚至
dim customers= GetCustomers()
dim youngest = (From c in customers
Select c).Min(Function(x) x.age)
Run Code Online (Sandbox Code Playgroud)
我不能为我的生活弄清楚如何获得整个对象(甚至索引)而不诉诸于排序......
有没有办法在C#中使用Linq来查找数组中的大多数元素?为了使它更复杂,如果没有多数,它应该采取第一个元素.
因此,例如对于数组["A", "B", "B"],语句应该评估为"B".并且,对于数组["A", "B", "C"],语句应该评估为"A".
我确信还有其他100种方法可以做到这一点,但好奇是否有Linq解决方案.
如何使用Linq选择最接近指定日期的记录?这适用于具有日期,产品ID,位置ID和余额的交易表.
鉴于这些要求:
表数据:
// code
Id, TransDateTime, ProductId, WarehouseId, Balance
1, 1-Jan-2011 00:00, 1, 1, 100
2, 1-Jan-2011 00:00, 1, 2, 10
3, 2-Jan-2011 00:00, 1, 1, 150
4, 3-Jan-2011 00:00, 1, 2, 25
5, 3-Jan-2011 00:00, 2, 1, 333
6, 7-Jan-2011 00:00, 1, 1, 149
7, 7-Jan-2011 01:00, 1, 2, 30
8, 7-Jan-2011 02:00, 1, 2, 35
Run Code Online (Sandbox Code Playgroud)
测试日期和输出
Date: 1-Jan would output:
1, 1-Jan-2011 00:00, 1, 1, 100
2, 1-Jan-2011 00:00, …Run Code Online (Sandbox Code Playgroud)