Search
Latest topics
Tận Dụng LinQ Trong Ứng Dụng.
Page 1 of 1
Tận Dụng LinQ Trong Ứng Dụng.
Bạn có thể bỏ vòng lặp foreach kết hợp với mệnh đề if để lọc dữ liệu.
Xem đọan code mẫu duới đây để thấy sự khác biệt
CLASSIC CODE
Users filteredUsers = new Users();
foreach (User currentUser in Users)
{
If(currentUser.Active && currentUser.Enabled)
{
If(!currentUser.LoggedIn)
filteredUsers.Add(currentUser);
}
}
LINQ CODE
var filteredUsers = from currentUser in Users
where (currentUser.Active && currentUser.AllowLogin && !currentUser.LoggedIn)
select user;
2.Chọn Dòng X
Khi ta muốn lựa chọn vài dòng từ 1 collection, chúng ta sẽ rảo qua collection và gán các giá trị thoả yêu cầu vào 1 colletion
mới.Khi mảng mới đã gán đủ giá trị phần tử chúng ta sẽ thoát khỏi vòng lặp.
Bạn xem thử đọan code sau.
CLASSIC CODE
Users filteredUsers = new Users();
for(int counter=0; counter < Users.Count; counter++)
{
If(Users[counter].Active && Users[counter].Enabled)
{
If(!Users[counter].LoggedIn)
filteredUsers.Add(Users[counter]);
}
If (filteredUsers.Count == 10) break;
}
LINQ CODE
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).Take(10)
3.Lấy phần tử đầu tiên trong Collection
Giả sử khi ta muốn lấy phần tử đầu tiên trong Collection.
ListadminUsers = RetrieveUsersForAdminRole(RoleType.Admin);
User firstUser = null;
If (adminUsers != null && adminUsers.Count > 0)
{
firstUser = adminUsers[0];
}
Ta có thẻ thay thế bằng câu truy vấn Linq sau.
ListadminUsers = RetrieveUsersForAdminRole(RoleType.Admin);
User firstUser = adminUsers.FirstOrDefault();
4.Không cần thiết sử dụng IComparer để sắp xếp dữ liệu
Ta có thể sử dụng method OrderBy để sắp xếp dữ lịêu.
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).OrderBy( u => u.Name);
Nếu ta muốn thêm điều kiện săp xếp thì sử dụng ThenBy
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).OrderBy( u => u.Name).ThenBy(u => u.Location);
Ta cũng có thể sắp xếp giảm dần bằng cách sử dụng OrderByDescending
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).OrderByDescending( u => u.Name).ThenBy(u => u.Location);
Bạn cũng có thể kết hợp thêm ThenByDescending
5.Không cần sử dụng vòng lặp để gán các phần tử trong mảng.
Thông thường chúng ta thường sử dụng vòng lặp để khởi gán các phần tử trong mảng
int[] monthsInAYear = new int[12];
for (int counter = 0; counter < monthsInAYear.Length; counter++)
{
monthsInAYear[counter] = counter + 1;
}
Ta có thẻ sử dụng method Range (System.Linq.Enuemerable.Range) để thay thế đọan code trên
int[] monthsInAYearByLINQ = System.Linq.Enumerable.Range(1, 12).ToArray();
6.Thay thế 2 vòng lặp bằng cách sử dụng Concat Operator
int[] firstArray = System.Linq.Enumerable.Range(1, 12).ToArray();
int[] secondArray = System.Linq.Enumerable.Range(13, 12).ToArray();
foreach (var fa in firstArray)
{
allElements.AppendLine(string.Format(“{0}”, fa));
}
foreach (var sa in secondArray)
{
allElements.AppendLine(string.Format(“{0}”, sa));
}
Bây giờ ta sử dụng Concat Operator sẽ làm cho đọan code của ta trông sáng sủa hơn.
int[] firstArray = System.Linq.Enumerable.Range(1, 12).ToArray();
int[] secondArray = System.Linq.Enumerable.Range(13, 12).ToArray();
foreach (var a in firstArray.Concat(secondArray))
{
allElements.AppendLine(string.Format(“{0}”, a));
}
7.Từ khóa Let
- Từ khóa let dùng để tạo 1 biến tạm trong linq,để câu truy vấn của bạn dễ đọc và dễ sửa hơn.
var results= from store in Stores where store.Sales.Average(s => s.Price) > 500
select new {
Name = store.Name,
StoreAveragePrice = store. Sales.Average(s => s.Price)
};
Ta thay thế bằng cách sử dụng từ khóa LET
var results= from store in Stores let AveragePrice = store.Sales.Average(s => s.Price)
where AveragePrice > 500
select new {
Name = store.Name,
StoreAveragePrice = AveragePrice
} ;
9.RegEx + LINQ?
Sử dụng Linq cùng với Regular Expression sẽ làm câu lệnh truy vấn của bạn đơn giản hơn.
ListexaminerStatements = new List();
examinerStatements.Add(“Mark was present.”);
examinerStatements.Add(“Julie was present.”);
examinerStatements.Add(“John was absent”);
System.Text.RegularExpressions.Regex myRegEx = new System.Text.RegularExpressions.Regex(“present”);
var presentStudents = examinerStatements.Where(statement => myRegEx.IsMatch(statement)).ToList();
foreach (var examinerStatement in presentStudents)
{
// Do something
}
Hi vọng vài điều trên sẽ làm cho cách sử dụng LinQ trong ứng dụng của các bạn linh họat hơn.
Xem đọan code mẫu duới đây để thấy sự khác biệt
CLASSIC CODE
Users filteredUsers = new Users();
foreach (User currentUser in Users)
{
If(currentUser.Active && currentUser.Enabled)
{
If(!currentUser.LoggedIn)
filteredUsers.Add(currentUser);
}
}
LINQ CODE
var filteredUsers = from currentUser in Users
where (currentUser.Active && currentUser.AllowLogin && !currentUser.LoggedIn)
select user;
2.Chọn Dòng X
Khi ta muốn lựa chọn vài dòng từ 1 collection, chúng ta sẽ rảo qua collection và gán các giá trị thoả yêu cầu vào 1 colletion
mới.Khi mảng mới đã gán đủ giá trị phần tử chúng ta sẽ thoát khỏi vòng lặp.
Bạn xem thử đọan code sau.
CLASSIC CODE
Users filteredUsers = new Users();
for(int counter=0; counter < Users.Count; counter++)
{
If(Users[counter].Active && Users[counter].Enabled)
{
If(!Users[counter].LoggedIn)
filteredUsers.Add(Users[counter]);
}
If (filteredUsers.Count == 10) break;
}
LINQ CODE
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).Take(10)
3.Lấy phần tử đầu tiên trong Collection
Giả sử khi ta muốn lấy phần tử đầu tiên trong Collection.
ListadminUsers = RetrieveUsersForAdminRole(RoleType.Admin);
User firstUser = null;
If (adminUsers != null && adminUsers.Count > 0)
{
firstUser = adminUsers[0];
}
Ta có thẻ thay thế bằng câu truy vấn Linq sau.
ListadminUsers = RetrieveUsersForAdminRole(RoleType.Admin);
User firstUser = adminUsers.FirstOrDefault();
4.Không cần thiết sử dụng IComparer để sắp xếp dữ liệu
Ta có thể sử dụng method OrderBy để sắp xếp dữ lịêu.
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).OrderBy( u => u.Name);
Nếu ta muốn thêm điều kiện săp xếp thì sử dụng ThenBy
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).OrderBy( u => u.Name).ThenBy(u => u.Location);
Ta cũng có thể sắp xếp giảm dần bằng cách sử dụng OrderByDescending
var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn).OrderByDescending( u => u.Name).ThenBy(u => u.Location);
Bạn cũng có thể kết hợp thêm ThenByDescending
5.Không cần sử dụng vòng lặp để gán các phần tử trong mảng.
Thông thường chúng ta thường sử dụng vòng lặp để khởi gán các phần tử trong mảng
int[] monthsInAYear = new int[12];
for (int counter = 0; counter < monthsInAYear.Length; counter++)
{
monthsInAYear[counter] = counter + 1;
}
Ta có thẻ sử dụng method Range (System.Linq.Enuemerable.Range) để thay thế đọan code trên
int[] monthsInAYearByLINQ = System.Linq.Enumerable.Range(1, 12).ToArray();
6.Thay thế 2 vòng lặp bằng cách sử dụng Concat Operator
int[] firstArray = System.Linq.Enumerable.Range(1, 12).ToArray();
int[] secondArray = System.Linq.Enumerable.Range(13, 12).ToArray();
foreach (var fa in firstArray)
{
allElements.AppendLine(string.Format(“{0}”, fa));
}
foreach (var sa in secondArray)
{
allElements.AppendLine(string.Format(“{0}”, sa));
}
Bây giờ ta sử dụng Concat Operator sẽ làm cho đọan code của ta trông sáng sủa hơn.
int[] firstArray = System.Linq.Enumerable.Range(1, 12).ToArray();
int[] secondArray = System.Linq.Enumerable.Range(13, 12).ToArray();
foreach (var a in firstArray.Concat(secondArray))
{
allElements.AppendLine(string.Format(“{0}”, a));
}
7.Từ khóa Let
- Từ khóa let dùng để tạo 1 biến tạm trong linq,để câu truy vấn của bạn dễ đọc và dễ sửa hơn.
var results= from store in Stores where store.Sales.Average(s => s.Price) > 500
select new {
Name = store.Name,
StoreAveragePrice = store. Sales.Average(s => s.Price)
};
Ta thay thế bằng cách sử dụng từ khóa LET
var results= from store in Stores let AveragePrice = store.Sales.Average(s => s.Price)
where AveragePrice > 500
select new {
Name = store.Name,
StoreAveragePrice = AveragePrice
} ;
9.RegEx + LINQ?
Sử dụng Linq cùng với Regular Expression sẽ làm câu lệnh truy vấn của bạn đơn giản hơn.
ListexaminerStatements = new List();
examinerStatements.Add(“Mark was present.”);
examinerStatements.Add(“Julie was present.”);
examinerStatements.Add(“John was absent”);
System.Text.RegularExpressions.Regex myRegEx = new System.Text.RegularExpressions.Regex(“present”);
var presentStudents = examinerStatements.Where(statement => myRegEx.IsMatch(statement)).ToList();
foreach (var examinerStatement in presentStudents)
{
// Do something
}
Hi vọng vài điều trên sẽ làm cho cách sử dụng LinQ trong ứng dụng của các bạn linh họat hơn.
Similar topics
» Sử dụng các lưu trữ nén RAR và 7-Zip trong Linux
» CRUD on Xml – LinQ to Xml
» SỬ DỤNG CÁC CÔNG CỤ DEBUG TRONG MÔI TRƯỜNG BORLAND C++
» Sử dụng trình soạn thảo đơn giản Vi (vim) trong linux
» Xây dựng lớp Stack
» CRUD on Xml – LinQ to Xml
» SỬ DỤNG CÁC CÔNG CỤ DEBUG TRONG MÔI TRƯỜNG BORLAND C++
» Sử dụng trình soạn thảo đơn giản Vi (vim) trong linux
» Xây dựng lớp Stack
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum
Thu Aug 23, 2012 5:38 am by Admin
» Tuyệt kỹ cua giai
Thu Aug 23, 2012 5:36 am by Admin
» NETCAT.........
Mon Aug 13, 2012 6:35 am by Admin
» Bảo mật CSDL bằng phương pháp mã hóa.
Tue Apr 17, 2012 10:04 pm by Admin
» Hàm mã hóa MD5 bằng JavaScript
Tue Apr 17, 2012 10:03 pm by Admin
» Giá của món quà
Fri Apr 13, 2012 6:01 am by Admin
» Sẽ chỉ yêu ai?
Fri Apr 13, 2012 6:01 am by Admin
» Cách đọc bảng chữ cái!
Thu Apr 12, 2012 10:37 pm by Admin
» Gắn trojan, keylog, virus vào website, forum
Tue Apr 10, 2012 1:14 am by Admin