HACKIS - Hacking Internet Security
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Search
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Tuyệt Kỹ Đong Giai Chân Kinh (tuyệt Kỹ cua trai)
Tận Dụng LinQ Trong Ứng Dụng. EmptyThu Aug 23, 2012 5:38 am by Admin

» Tuyệt kỹ cua giai
Tận Dụng LinQ Trong Ứng Dụng. EmptyThu Aug 23, 2012 5:36 am by Admin

» NETCAT.........
Tận Dụng LinQ Trong Ứng Dụng. EmptyMon Aug 13, 2012 6:35 am by Admin

» Bảo mật CSDL bằng phương pháp mã hóa.
Tận Dụng LinQ Trong Ứng Dụng. EmptyTue Apr 17, 2012 10:04 pm by Admin

» Hàm mã hóa MD5 bằng JavaScript
Tận Dụng LinQ Trong Ứng Dụng. EmptyTue Apr 17, 2012 10:03 pm by Admin

» Giá của món quà
Tận Dụng LinQ Trong Ứng Dụng. EmptyFri Apr 13, 2012 6:01 am by Admin

» Sẽ chỉ yêu ai?
Tận Dụng LinQ Trong Ứng Dụng. EmptyFri Apr 13, 2012 6:01 am by Admin

» Cách đọc bảng chữ cái!
Tận Dụng LinQ Trong Ứng Dụng. EmptyThu Apr 12, 2012 10:37 pm by Admin

» Gắn trojan, keylog, virus vào website, forum
Tận Dụng LinQ Trong Ứng Dụng. EmptyTue Apr 10, 2012 1:14 am by Admin

Affiliates
free forum


Tận Dụng LinQ Trong Ứng Dụng.

Go down

Tận Dụng LinQ Trong Ứng Dụng. Empty Tận Dụng LinQ Trong Ứng Dụng.

Post  Admin Thu Mar 29, 2012 12:56 am

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.
Admin
Admin
Admin

Tổng số bài gửi : 782
Join date : 2009-08-15

https://hackis.forumvi.com

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum