채 데이터 집합이나 DataTable 에서 쿼리 result set
-
08-06-2019 - |
문제
당신은 어떻게 노출 LINQ 쿼리로 ASMX 웹 서비스입니까?일반적으로,비즈니스 계층,저는 반환할 수 있 입력 DataSet
나 DataTable
할 수 있는 직렬화를 위한 전송을 통해 ASMX.
어떻게 할 수 있는 동에 대한 쿼리?는 방법이 있을 채우는 입력 DataSet
나 DataTable
를 통해 쿼리?
public static MyDataTable CallMySproc()
{
string conn = "...";
MyDatabaseDataContext db = new MyDatabaseDataContext(conn);
MyDataTable dt = new MyDataTable();
// execute a sproc via LINQ
var query = from dr
in db.MySproc().AsEnumerable
select dr;
// copy LINQ query resultset into a DataTable -this does not work !
dt = query.CopyToDataTable();
return dt;
}
를 얻을 수 있는 방법은 결과는 설정의 쿼리로 DataSet
나 DataTable
?또한,이 LINQ 에 쿼리를 직렬화할 수 있도록 노출로 ASMX 웹 서비스입니까?
해결책
에서 언급했듯이,질문 IEnumerable
가 CopyToDataTable
방법:
IEnumerable<DataRow> query =
from order in orders.AsEnumerable()
where order.Field<DateTime>("OrderDate") > new DateTime(2001, 8, 1)
select order;
// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();
왜 없는 것은 당신을 위해 작동 합니까?
다른 팁
을 수행하는 이에 대한 쿼리 DataContext
클래스에,당신은에서는 다음을 수행해야 합니다:
MyDataContext db = new MyDataContext();
IEnumerable<DataRow> query =
(from order in db.Orders.AsEnumerable()
select new
{
order.Property,
order.Property2
})
as IEnumerable<DataRow>;
return query.CopyToDataTable<DataRow>();
이 없 as IEnumerable<DataRow>;
다음과 같은 컴파일러:
할 수 없는 암시적으로 변환 type'의 시스템입니다.컬렉션이 있습니다.일반적입니다.페'를 시스템입니다.컬렉션이 있습니다.일반적입니다.페'.는 명시적 변환 존재하는(당신은 누락 캐스팅?)
트의 데이터 전송을 개체의 몇 가지 매퍼에 돌아와 그를 통해.asmx.
야 지 노출의 데이터베이스 객체를 직접으로 변경 절차에서 스키마를 전파하는 웹 서비스 소비자에게 당신이 그것을 몰래.
사용하는 경우에는 반품의 유형 IEnumerable
, 를 반환할 수 있습니다 당신 쿼리 변수를 직접 있습니다.
클래스를 만들 개체 반환 list(T)
의 쿼리가 있습니다.
사용하는 경우에는 반품의 유형 IEnumerable
.그것은 반환하는 쿼리를 직접 변수.
MyDataContext db = new MyDataContext();
IEnumerable<DataRow> query =
(from order in db.Orders.AsEnumerable()
select new
{
order.Property,
order.Property2
})
as IEnumerable<DataRow>;
return query.CopyToDataTable<DataRow>();