を取得していますが、そのSpecified cast is not valid.
理由がわかりません。これが私のコードです。
オブジェクト層。
public class Supervisor
{
public long ID { get; set; }
public string stringField1 { get; set; }
public string stringField2 { get; set; }
public string stringField3 { get; set; }
public int intField1{ get; set; }
public int intField2 { get; set; }
}
C# メソッド。
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string GetPend(string value1FromjqGrid, string value2FromjqGrid)
{
string query = "GetPend";
string supervisor = "";
Supervision _query = new Supervision();
DataTable dt = _query.GetSupervisorQuery(value1FromjqGrid, value2FromjqGrid, supervisor, query );
List<Supervisor> lines = (from dt1 in dt.AsEnumerable()
select new Supervisor()
{
ID = dt1.Field<long>("ID"),
stringField1 = dt1.Field<string>("Linea"),
intField1 = dt1.Field<int>("Tiempo"),
intField2 = dt1.Field<int>("TIPOACTIVIDAD_ID"),
stringField2 = dt1.Field<string>("ACT_ID"),
stringField3 = dt1.Field<string>("OBS")
}).ToList();
var grid = new
{
page = 1,
records = lines.Count(),
total = lines.Count(),
rows = from item in lines
select new
{
id = item.ID,
cell = new string[]{
item.stringField1,
item.intField1.ToString(),
item.intField2.ToString(),
item.stringField2,
item.stringField3
}
}
};
return JsonConvert.SerializeObject(grid);
}
それは多かれ少なかれそれです。反復が開始されると、LinQ
クラッシュします。DataTable
チェックしたとおりに正しく入力されておりdt1
、フィールドが正しく含まれています。""
文字列列の と の数値が表示されますint's
(SQL ストアド プロシージャを自分で実行したので、そこでもチェックを行いました)。jqGrid
呼び出しの直前にいくつかのアラートを配置しました。はい、問題ありません。
DataTable
コードが からへの情報を解析しようとするとエラーが発生するため、関連していると思われるコードを貼り付けました。List
ここに含まれる JavaScript を確認する必要がある場合はお知らせください。必要です。明らかに何かが見えないので、正しい方向に導いてくれることを願っています. ありがとう。
PS。LINQPad4 でチェックアウトしようとしましたが、元の DataTable 変数を表す方法がわからないため、試してみることができません。
更新します。
エラーを展開すると、VS から次のように表示されます。
at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
at WEB.Supervisor.<GetPend>b__b(DataRow dt1) in E:\Dev\VS\WEB\Supervisor.aspx.cs:line 110
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at WEB.Supervisor.GetPend(String value1FromjqGrid, String value2FromjqGrid) in E:\Dev\VS\WEB\Supervisor.aspx.cs:line 109
109行目と110行目はこれ
List<Supervisor> lines = (from dt1 in dt.AsEnumerable()
select new Supervisor()
変換プロセスの開始時にクラッシュします。
更新 2
コメントによると、私は次のようにしました。
を取得し、トラッシュ テーブルを生成するためのSELECT
に変換しました。SELECT INTO
次に、その設計を確認しましたが、正直驚いたことに、フィールドCAST(ACT_ID AS NVARCHAR(50))
はまだ 10 進数であり、予想どおり nvarchar ではありませんでした。
それで、これをLinQ
小数として処理する必要があるようですが、それとも何か他のことをすることができますか? 私はdecimals
過去に協力しようとしましたが、成功しませんでした。