c# list to datatable linq




Linq:datatable 열의 값 선택 (5)

linq을 사용하고 데이터 테이블을 Enumerable로 설정하고 데이터 테이블 필드에서 찾고자하는 것과 일치하는 필드를 선택하십시오.

통화가 현지 통화 인 통화 테이블에서 통화 ID와 통화 이름을 가져오고 통화 ID와 이름을 양식의 텍스트 상자에 할당하려고합니다.

DataTable dt = curData.loadCurrency();
            var curId = from c in dt.AsEnumerable()
                        where c.Field<bool>("LocalCurrency") == true
                        select c.Field<int>("CURID");

            foreach (int cid in curId)
            {
                txtCURID.Text = cid.ToString();
            }
            var curName = from c in dt.AsEnumerable()
                          where c.Field<bool>("LocalCurrency") == true
                          select c.Field<string>("CurName");
            foreach (string cName in curName)
            {
                txtCurrency.Text = cName.ToString();
            }

LINQ (C#) 를 사용하여 datatable 의 특정 행에 대한 특정 열의 값을 선택하는 방법은 무엇입니까? 동등한 SQL 은 다음과 같습니다.

select NAME from TABLE where ID = 0

미리 감사드립니다.


귀하의 답변에 감사드립니다. "MyTable"개체의 유형을 (귀하의 답변에서) 이해하지 못했으며 다음 코드는 아래에 표시된 오류를 알려줍니다.

DataTable dt = ds.Tables[0];
var name = from r in dt
           where r.ID == 0
           select r.Name;

원본 형식 'System.Data.DataTable'에 대한 쿼리 패턴 구현을 찾을 수 없습니다. '찾을 수없는 곳'

그래서 나는 인터넷 검색을 계속하고 효과가있는 것을 발견했다.

var rowColl = ds.Tables[0].AsEnumerable();
string name = (from r in rowColl
              where r.Field<int>("ID") == 0
              select r.Field<string>("NAME")).First<string>();

어떻게 생각해?


반환 값이 string이고 ID로 검색해야하는 경우 다음을 사용할 수 있습니다.

string name = datatable.AsEnumerable().Where(row => Convert.ToInt32(row["Id"]) == Id).Select(row => row.Field<string>("name")).ToString();

또는 일반 변수 사용 :

var name = datatable.AsEnumerable().Where(row => Convert.ToInt32(row["Id"]) == Id).Select(row => row.Field<string>("name"));

var name = from DataRow dr in tblClassCode.Rows where (long)dr["ID"] == Convert.ToInt32(i) select (int)dr["Name"]).FirstOrDefault().ToString() 

var x  =  from row in table
          where row.ID == 0
          select row

행에 대해 알고있는 DataTable이 있다고 가정하면 행 인덱스를 사용해야합니다.

where row[rowNumber] == 0

이 경우 select를 사용하여 행 데이터를 익명 클래스 또는 준비된 클래스 (다른 메서드로 전달하려는 경우)에 배치 할 수도 있습니다.





datatable