DataSet.CopyToDataTable에 LINQ에서 '새로운 선택'작동하지 않습니다 http://msdn.microsoft.com/en-us/library/bb386921.aspx다음 링크에서()
단락 "사용자 정의 CopyToDataTable 방법 만들기">
예
나는 비슷한 뭔가를 시도했다.ObjDA = new OleDbDataAdapter(querySQL, conection);
//Create a DataSet object:
ObjDS = new DataSet();
ObjDA.Fill(ObjDS, "Table1");
DataTable MyTable = ObjDS.Tables["Table1"];
//IEnumerable<DataRow> query =
var query =
from user in MyTable.AsEnumerable()
where user.Field<string>("Name").StartsWith("c", true, null)
select new
{
Name = user.Field<string>("Name")
};
DataTable orderTable = query.CopyToDataTable();
문제는 "query.CopyToDataTable"에 있습니다 :에 "System.Data.DataRow"암시 적 참조 변환 "AnonymoustType # 1"이되지 않습니다 내 코드입니다. "select user"라고 쓰면 문제없이 작동합니다 : 새로운 것을 선택하십시오.
내가 작성하는 경우 :
query = (...) as IEnumerable<DataRow>
쿼리는 항상 null를 돌려줍니다.
나는 무엇을 해야할지 잘 모릅니다.
your link : "그러나 CopyToDataTable 메서드는 generic 매개 변수 T가 DataRow 유형 인 IEnumerable 소스에서만 작동합니다." MyTable.AsEnumerable에서 사용자로부터이하지 못했습니다? '는 IEnumerable 쿼리 = 는()이다 user.Field ("이름"). StartsWith ("C", NULL, 사실은) 새로운 { 이름을 선택 = user.Field ("이름") }; ' –
매우 감사합니다. –
@karmany 첫 번째 주석의 코드가 작동하지 않는 이유는 새로 작성한 객체가 * DataRow가 아니기 때문입니다.임의의 타입을 가져 와서 "'DataRow as"라고 말할 수는 없습니다. DataRow로부터 파생시켜야합니다. 임의의 익명 유형은 유효하지 않습니다. –