Thursday, May 10, 2012

การหาค่า MAX ใน LINQ โดยใช้ C#

เกริ่นนำ
การหาค่า MAX ส่วนใหญ่ในงานของผมเป็นการรันนิ่งตัวเลข ซึ่งจากตัวอย่างต่างๆ ที่หามาได้ก็ทำให้รู้ว่ารูปแบบข้อมูลแต่ละอย่างนั้นใช้ต่างกัน จึงขอรวบรวมไว้ เพื่อใช้อ้างอิงในงานต่อๆไป
ตัวอย่างการใช้งาน
1.ค่า MAX จาก Object list array

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Employee {
public int birthYear;
public string firstName;
public string lastName;

public static Employee[] GetEmployees() {
Employee[] actors = new Employee[] {
new Employee { birthYear = 1964, firstName = "K", lastName = "R" },
new Employee { birthYear = 1968, firstName = "O", lastName = "W" },
new Employee { birthYear = 1960, firstName = "J", lastName = "S" },
new Employee { birthYear = 1964, firstName = "S", lastName = "B" },
};
return (actors);
}
}
public class MainClass {
public static void Main() {
string lastAlphabetically = Employee.GetEmployees().Max(a => a.lastName);
Console.WriteLine(lastAlphabetically);
}
}

2.ค่า MAX จาก int array



using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;

public class MainClass {
public static void Main() {
int[] myInts = new int[] { 974, 2, 7, 1374, 27, 54 };
int maxInt = myInts.Max();
Console.WriteLine(maxInt);
}
}

3.ค่า MAX จาก string array



using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;

public class MainClass {
public static void Main() {
string[] presidents = {"G", "H", "H", "H", "H", "J"};
string maxName = presidents.Max();
Console.WriteLine(maxName);
}
}

4.ค่า MAX จาก object list



using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Employee {
public int birthYear;
public string firstName;
public string lastName;

public static Employee[] GetEmployees() {
Employee[] actors = new Employee[] {
new Employee { birthYear = 1964, firstName = "K", lastName = "R" },
new Employee { birthYear = 1968, firstName = "O", lastName = "W" },
new Employee { birthYear = 1960, firstName = "J", lastName = "S" },
new Employee { birthYear = 1964, firstName = "S", lastName = "B" },
};
return (actors);
}
}
public class MainClass {
public static void Main() {
int youngestEmployeeAge = Employee.GetEmployees().Max(a => a.birthYear);
Console.WriteLine(youngestEmployeeAge);
}
}

5.ค่า MAX และ Min จาก query


using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Reflection;

class Salary {
int _id;
int _year;
double _salary;

public int ID {
get { return _id; }
set { _id = value; }
}

public int Year {
get { return _year; }
set { _year = value; }
}

public double SalaryPaid {
get { return _salary; }
set { _salary = value; }
}
}
class Employee {
int _id;
int _idRole;
string _lastName;
string _firstName;

public int ID {
get { return _id; }
set { _id = value; }
}

public int IDRole {
get { return _idRole; }
set { _idRole = value; }
}

public string LastName {
get { return _lastName; }
set { _lastName = value; }
}

public string FirstName {
get { return _firstName; }
set { _firstName = value; }
}
}
class Role {
int _id;
string role;

public int ID {
get { return _id; }
set { _id = value; }
}

public string Role {
get { return role; }
set { role = value; }
}
}

public class MainClass {
public static void Main() {
List people = new List {
new Employee { ID = 1, IDRole = 1, LastName = "A", FirstName = "B"},
new Employee { ID = 2, IDRole = 2, LastName = "G", FirstName = "T"},
new Employee { ID = 3, IDRole = 2, LastName = "G", FirstName = "M"},
new Employee { ID = 4, IDRole = 3, LastName = "C", FirstName = "G"}
};
List roles = new List {
new Role { ID = 1, Role = "Manager" },
new Role { ID = 2, Role = "Developer" }
};
List salaries = new List {
new Salary { ID = 1, Year = 2004, SalaryPaid = 10000.00 },
new Salary { ID = 1, Year = 2005, SalaryPaid = 15000.00 },
new  Salary { ID = 1, Year = 2005, SalaryPaid = 15000.00 }
};
var query = from p in people
join s in salaries on p.ID equals s.ID
where p.ID == 1
select s.SalaryPaid;

Console.WriteLine("Minimum Salary:");
Console.Write(query.Min());

Console.WriteLine("Maximum Salary:");
Console.Write(query.Max());
}
}


สรุป
การใช้งานที่พบบ่อยๆ ก็น่าจะประมาณนี้นะครับ สำหรับตัวอย่างอื่น ตาม ลิงค์นี้เลยครับ
ผมนำตัวอย่างมาจากที่นี่นะครับ ให้เขียนเองคงไม่ทันการ ก็ลองแวะเข้าไปดูตรงๆ ได้ที่นี่
http://www.java2s.com/Code/CSharp/LINQ/GettheMinandmaxvaluefromaquery.htm
และตัวอย่างอื่นๆ อีกมากมาย

No comments:

Post a Comment