如何使用Linq查询从helper类属性中检索数据
本文关键字:属性 检索 数据 helper 何使用 Linq 查询 | 更新日期: 2023-09-27 18:13:06
我想检索数据表单CPayment
的列表,但是当我写linq查询时,CPaymentModel
类属性被加载,但TransactionHelper
类属性未加载,无法查看
如何访问Helper类属性或如何获得类Helper和非Helper属性的列表?如何解决这个问题…
My Model Class Code is
public class CPaymentModel<br>
{
public CPaymentModel()<br>
{
Transaction =new TransactionHelper();
}
//Local Class Properties
public UInt64 CardNo { get; set; }
public DateTime FileDate { get; set; }
//Helper Class
public TransactionHelper Transaction { get; set; }
}
public class TransactionHelper<br>
{
public int TransCode { get; set; }
public DateTime TransDate { get; set; }
}
控制器代码为:
public ActionResult GetPersons([DataSourceRequest] DataSourceRequest dsRequest)
{
var session = SessionManager.GetCurrentSession();<br>
var data2 = session.Query < CPayment > ().Select(row => new CPaymentModel()
{
CardNo = row.CardNo,<br>
FileDate = row.FileDate,<br>
Transaction =row.Transaction<br>
}).ToList < CPaymentModel > ();<br>
var list = data2.ToDataSourceResult(dsRequest);
return Json(list);
}
索引页(KendoUI-grid)代码:
@(Html.Kendo().Grid < CPaymentModel > ()
.Name("PaymentInfo")
.DataSource(dataSource => dataSource
.Ajax()<br>
.Read(read => read.Action("GetPersons", "KendoDemo"))
)
)
My Output Is:(点击)https://i.stack.imgur.com/ZjKPU.png
试试这个
var session = SessionManager.GetCurrentSession();
var data2 = session.Query<CPayment>().Select(row => new CPaymentModel()
{
CardNo = row.CardNo,
Product = row.ProductDetails.Product,
Subproduct = row.ProductDetails.Subproduct,
FileDate = row.FileDate,
Transaction =new TransactionHelper()
{
TransCode = row.Transaction.TransCode;
TransDate = row.Transaction.TransDate
}
}).ToList<CPaymentModel>();
var list = data2.ToDataSourceResult(dsRequest);
可能调用Include方法,将Transaction属性的路径作为参数,表明EF应该用所有属性加载它
var session = SessionManager.GetCurrentSession();
var data2 = session.Query<CPayment>().**Include("CPayment.Transaction").**Select(row => new CPaymentModel()
{
CardNo = row.CardNo,
Product = row.ProductDetails.Product,
Subproduct = row.ProductDetails.Subproduct,
FileDate = row.FileDate,
Transaction =row.Transaction
}).ToList<CPaymentModel>();
var list = data2.ToDataSourceResult(dsRequest);
如果您想创建事务助手的新对象,请使用此方法。这里我创建了一个新对象,并使用初始化器语法来设置属性。
var session = SessionManager.GetCurrentSession();
var data2 = session.Query<CPayment>().Select(row => new CPaymentModel()
{
CardNo = row.CardNo,
Product = row.ProductDetails.Product,
Subproduct = row.ProductDetails.Subproduct,
FileDate = row.FileDate,
Transaction = new TransactionHelper
{
TransCode = row.Transaction.TransCode,
TransDate = row.Transaction.TransDate
}
}).ToList<CPaymentModel>();
var list = data2.ToDataSourceResult(dsRequest);
你知道吗?你总是可以写一个lambda函数而不是一个lambda表达式,像
row =>
{
CPaymentModel cpModel = new CPaymentModel()
{
CardNo = row.CardNo,
Product = row.ProductDetails.Product,
Subproduct = row.ProductDetails.Subproduct,
FileDate = row.FileDate,
Transaction = new TransactionHelper()
};
cpModel.Transaction = new Transaction();
cpModel.Transaction.TransCode = row.Transaction.TransCode;
cpModel.Transaction.TransDate = row.Transaction.TransDate;
return cpModel;
}
这是一个完全有效的结构。