Search
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» NewBlueFx TotalFX Windows-FL | 1.11 GB
Tue Dec 17, 2013 12:42 pm by titquarra

» NewBlueFx TotalFX Windows-FL | 1.11 GB
Tue Dec 17, 2013 12:42 pm by titquarra

» Celebrity.Sex.Tape.UNCUT.&.UNRATED.2012.720p.BRrip.x264.YIFY.mp4
Tue Dec 17, 2013 8:32 am by titquarra

» Maya Autodesk Personal Learning Edition 8.5
Tue Dec 17, 2013 7:47 am by titquarra

» Tuyệt Kỹ Đong Giai Chân Kinh (tuyệt Kỹ cua trai)
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

Shopmotion


Affiliates
free forum


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

View previous topic View next topic Go down

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

Post  Admin on 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

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

View user profile http://hackis.forumotion.com

Back to top Go down

View previous topic View next topic Back to top

- Similar topics

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