class Employee {
public int ID { get;set; }
public string FName { get; set; }
public int Age { get; set; }
public char Sex { get; set; }
如果对这个类的Age
和Sex
的连个字段进行分组,方法如下:
List<Employee> empList = new List<Employee>();
empList.Add(new Employee() {
ID = 1, FName = "John", Age = 23, Sex = 'M'
});
empList.Add(new Employee() {
ID = 2, FName = "Mary", Age = 25, Sex = 'F'
});
empList.Add(new Employee() {
ID = 3, FName = "Amber", Age = 23, Sex = 'M'
});
empList.Add(new Employee() {
ID = 4, FName = "Kathy", Age = 25, Sex = 'M'
});
empList.Add(new Employee() {
ID = 5, FName = "Lena", Age = 27, Sex = 'F'
});
empList.Add(new Employee() {
ID = 6, FName = "Bill", Age = 28, Sex = 'M'
});
empList.Add(new Employee() {
ID = 7, FName = "Celina", Age = 27, Sex = 'F'
});
empList.Add(new Employee() {
ID = 8, FName = "John", Age = 28, Sex = 'M'
});
接下来的做法是:
var sums = empList
.GroupBy(x => new { x.Age, x.Sex })
.Select(group => new {
Peo = group.Key, Count = group.Count()
});
foreach (var employee in sums) {
Console.WriteLine(employee.Count + ": " + employee.Peo);
var sums2 = from emp in empList
group emp by new { emp.Age, emp.Sex } into g
select new { Peo = g.Key, Count = g.Count() };
foreach (var employee in sums) {
Console.WriteLine(employee.Count + ": " + employee.Peo);
这个例子中就充分利用了匿名类型。
LINQ按多列分组(Group By)并计算总和(Sum)SQL语句:SELECT * FROM <TableName> GROUP BY <Column1>,<Column2>QuantityBreakdown( MaterialID int, ProductID int, Quantity float)INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity)
var deGroup = from tt in list
where tt.WZ_TYPE_ID == 0
group tt by new { tt.SCTYPE_ID, tt.SCTYPE_IDNAME }
into qq
select new
SCTYPE_ID = qq.Key.SCTYPE_I..
static void Main( string[] args )
int[] intNumbers = new int[] { 1, 4, 3, 4 };
float[] floatNumbers = new float
public string goodType { get; set; }
public string goodName { get; set; }
public int price { get; set; }
在Linq中有一些这样的操作,根据集合计算某一单一值,比如集合的最大值,最小值,平均值等等。Linq中包含7种操作,这7种操作被称作聚合操作。
1、Count操作,计算序列中元素的个数,或者计算满足一定条件的元素的个数
2、Sum操作,计算序列中所有元素的值的总和
3、Max操作,计算序列中元素的最大值
4、Min操作,计算序列中元素的最小值
5、Average操作,计算序列中所有元...
var data = Db.SqlQueryable<GPS_WY_DataTrend>(sqlstr);
//根据STCD分组 然后汇总每组的HorizontalWY值
var groupdata=data.GroupBy(t => t.STCD).Select(t=>new { STCD=t.STCD, HorizontalWY =SqlFunc.AggregateSum(t.HorizontalWY)}).OrderBy(t=>t.HorizontalWY,OrderBy
LINQ和Lambda都是C#编程语言的功能,但它们有不同的用途。
LINQ是一个查询语言,允许您使用类似于SQL的语法查询各种数据源,例如数据库、集合、XML文档等。使用LINQ可以更容易地查询和处理数据,从而减少了编写大量循环和条件语句的代码。
Lambda是一种表达式,用于创建匿名方法或委托。Lambda表达式通常用于LINQ查询中作为筛选器、选择器或排序器。它允许您更轻松地编写匿名函数,并且可以提高代码的可读性和可维护性。
因此,虽然LINQ和Lambda经常一起使用,但它们有不同的功能和用途。LINQ用于查询和处理数据,而Lambda用于编写匿名方法和委托。