C\#끼 워 넣 기 순환 을 줄 이 는 두 가지 방법

3481 단어 c#소켓 순환
물론 뚜렷 한 순환,예 를 들 어 for,foreach 외 에 도 데이터 테이블.select(),linq 와 같은 list.where,list.find 등 은밀 한 순환 에 도 관심 을 가 져 야 한다.
최적화 하고 업무 문 제 를 배제 하려 면 코드 기술 을 고려 해 야 한다.반복 적 으로 데 이 터 를 찾 는 것 을 보고 가능 한 한 Dictionary 에 접근 하 세 요.
eg1:간단 한 key 는 datarow 에 대응 합 니 다.
최적화 전:

using System.Linq;

namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            DataTable table = new DataTable();
            ...
            for (int i = 0; i < 1000000; i++)
            {
                var row = table.AsEnumerable().FirstOrDefault(r => r["num"].ToString() == i.ToString());
                ...
            }
        }
    }
}
최적화 후:

using System.Data;
using System.Linq;

namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            DataTable table = new DataTable();
            ...
            var dict = table.AsEnumerable().ToDictionary(r => r["num"].ToString());
            for (int i = 0; i < 1000000; i++)
            {
                if (dict.ContainsKey(i.ToString()))
                {
                    var row = dict[i.ToString()];
                }
                ...
            }
        }      
    }
}
eg2:하나의 패키지 키 는 여러 개의 DataRow 사전 에 대응 합 니 다.
최적화 전:

using System.Data;
using System.Linq;

namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            DataTable table = new DataTable();   
            ...
            for (int i = 0; i < 1000000; i++)
            {
                var name = "";
                ...
                var rows = table.AsEnumerable().Where(r => r["num"].ToString() == i.ToString() && r["name"].ToString() == name);
            }
        }             
    }
}
최적화 후:

using System.Data;
using System.Linq;

namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            DataTable table = new DataTable();
            var group = table.AsEnumerable().GroupBy(r => GetGroupKey(r["num"].ToString(), r["name"].ToString()));
            var dict= group.ToDictionary(r=>r.Key);
            ...
            for (int i = 0; i < 1000000; i++)
            {
                var name = "";
                var key = GetGroupKey(i.ToString(), name);
                if (dict.ContainsKey(key))
                {
                    var rows = dict[key];
                }               
                ...
            }
        }      
       
        private static string GetGroupKey(string _num,string _name)
        {
            return $"num={_num}|name={_name}";
        }
    }
}
양 적 변 화 는 질 적 변 화 를 일 으 킬 수 있다.
이상 은 C\#끼 워 넣 기 순환 을 줄 이 는 두 가지 방법 에 대한 상세 한 내용 입 니 다.C\#끼 워 넣 기 순환 을 줄 이 는 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기