0

net と私は .net でアプリケーションを開発しています。

次のエラーが表示され、コードの何が問題なのかわかりません

LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.

これは、例外が発生する私のコードです。

public List<ToureDeieselBean> loadDeiselListOnTourUpDownId(int tourUpDownId)
    {
        return (from p in context.tb_tourDiesel
                where p.deleted == 0
                where p.tourUpDownId == tourUpDownId
                select new ToureDeieselBean
                {
                    id = p.id,
                    qty =(float)p.qty,
                    ratePerlt = (float)p.ratePerlt,
                    createdBy = p.createdBy,
                    createdOn = p.createdOn==null?"":(p.createdOn).ToString(),
                    updatedBy = p.updatedBy,
                    updatedOn = p.updatedOn == null ? "" :(p.updatedOn).ToString(),
                    descrption=p.descrption,
                    deleted=Convert.ToBoolean(p.deleted)
                }).ToList<ToureDeieselBean>();
    }
4

2 に答える 2

0

null 合体演算子ToStringを使用して、より長い三項演算子を削除できます。

public List<ToureDeieselBean> loadDeiselListOnTourUpDownId(int tourUpDownId)
{
        return (from p in context.tb_tourDiesel
                where p.deleted == 0
                where p.tourUpDownId == tourUpDownId
                select new ToureDeieselBean
                {
                    id = p.id,
                    qty =(float)p.qty,
                    ratePerlt = (float)p.ratePerlt,
                    createdBy = p.createdBy,
                    createdOn = p.createdOn ?? "",
                    updatedBy = p.updatedBy,
                    updatedOn = p.updatedOn ?? "",
                    descrption=p.descrption,
                    deleted=Convert.ToBoolean(p.deleted)
                }).ToList<ToureDeieselBean>();
}
于 2013-10-13T12:15:13.660 に答える
0

EF LINQ クエリを使用すると SQL に変換され、SQL に存在しない LINQ でそのようなメソッドを使用すると、この例外が発生します。

これはうまくいきます:

var temp=(from p in context.tb_tourDiesel
                where p.deleted == 0
                where p.tourUpDownId == tourUpDownId).ToList<ToureDeieselBean>();

        return (from p in temp 
                select new ToureDeieselBean
                {
                    id = p.id,
                    qty = (float)p.qty,
                    ratePerlt = (float)p.ratePerlt,
                    createdBy = p.createdBy,
                    createdOn = p.createdOn == null ? "" : (p.createdOn).ToString(),
                    updatedBy = p.updatedBy,
                    updatedOn = p.updatedOn == null ? "" : (p.updatedOn).ToString(),
                    descrption = p.descrption,
                    deleted = Convert.ToBoolean(p.deleted)
                }).ToList();
于 2013-10-13T12:16:47.753 に答える