Quantcast tìm index của 1 phần tử trong tập hợp sử dụng linq

tìm index của 1 phần tử trong tập hợp sử dụng linq

by Neon Quach 1. November 2010 18:43

Trên thực tế việc nhận biết thứ tự index của 1 phần tử trong tập hợp các giá trị là công việc thường xảy ra, mình có thể tạm gọi là tìm element trong 1 sequence, mình đang phát triển 1 module hiển thị lịch sử cá cược dạng đồ thị, trong đó có yêu cầu là xác định ngày diễn ra trận đấu và ngày hiện tại, nếu ngày hiện tại = với mathdate (ngày diễn ra trận đấu) thì chúng ta sẽ load biểu đồ có chứa các lượt trận đó trước (chú ý:biểu đồ này có phân trang).

Khi đó mình sẽ xác định index của element trong tập hợp lịch sử cá cược, sau đó lấy số lượng phân trang chia cho index lấy phần dư.

Ví dụ: tập hợp list có 32 phần tử được phân 8 phần tử trên mổi trang như vậy chúng ta có 4 trang, nếu index của chúng ta là 10 vậy thì nó sẽ nằm ở page=2 (10%8=2).

Để đơn giản chúng ta rảo qua code sau:

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

namespace CS
{
    class Program
    {
        static void Main()
        {
            List<String> myFullname = new List<string>
                                          {
                                              "Quach",
                                              "Ngoc",
                                              "Hoang",
                                              "Nguyen"
                                          };
            var position = myFullname.Select((item, index) => new
                                                                  {
                                                                      Name = item,
                                                                      Posistion = index
                                                                  }).ToList();

            var position1 = myFullname.Select((item1, index1) => new
                                                                     {
                                                                         Name = item1,
                                                                         Posistion = index1
                                                                     }).Where(n => n.Name == "Nguyen").SingleOrDefault().
                Posistion;
            Console.Read();
        }
    }
}


VB.NET:

Module Module1

    Sub Main()
        Dim myFullname As New List(Of StringFrom
        {
            "Quach""Ngoc""Hoang""Nguyen"
        }

        Dim position = myFullname.[Select](Function(item, index) New With
{.Name = item, .Posistion = index}).ToList()

        Dim position1 = myFullname.[Select](Function(item, index) New With
{.Name = item, .Posistion = index}).Where(Function(n) n.Name = "Nguyen").SingleOrDefault().Posistion

    End Sub

End Module


Đầu tiên mình sẽ tạo 1 danh sách các chuổi bao gồm họ và tên đây đủ của mình, trong block tiếp theo mình đã dùng lambda expression trong đó item là từ phần tử của list, tham số còn lại là index của nó, sau đó mình sẽ transform func này vào anonymous type.



Debug position chúng ta sẽ khảo sát như bên trên, nếu chúng ta chỉ muốn lấy index của 1 element nào đó được chỉ định thì xem posistion1

FindIndexOfSequenceInLinq.rar (64.60 kb)

Hope this help

Tags: ,


Categories: linq | linq2entity

blog comments powered by Disqus

About me

I'm  currently employed as Software developer at devinition.com and also a Microsoft Certified Technology Specialist (MCTS), Microsoft Certified Professional Developer (MCPD) in Net Framework 2.0 and 3.5: Web Applications and MCTS .NET Framework 3.5, ADO.NET Applications

Powered by BlogEngine.NET 2.5.0.5 - Eco Theme by n3o Web Designers