【发布时间】:2021-11-14 01:43:18
【问题描述】:
我需要运行大量的 linq 查询,并且在构造函数中运行它们对我有好处。
我有一个类似的查询:
var query = _cctDBContext.table1
.Select(b => new {
b.Id,
b.SegmentId,
b.Response1,
b.ResponseDescription,
b.ResponseGuidance})
.Where(b => b.SegmentId == SegmentId)
我知道这是匿名的,但我怎么能在构造函数中执行呢?
像这样:
public class SegmentData
{
private readonly sqldbCLSegImportUKSATPTestContext _clDBContext;
private readonly sqldbCCTUKSATPTestContext _cctDBContext;
private readonly IList<Response> ResponseCCTtoAuditResponse;
public SegmentData(
sqldbCLSegImportUKSATPTestContext clDBContext,
sqldbCCTUKSATPTestContext cctDBContext)
{
_clDBContext = clDBContext;
_cctDBContext = cctDBContext;
// AUDIT RESPONSE PAGE 15
ResponseCCTtoAuditResponse = _cctDBContext.Response
.Select(b => new {
b.ResponseId,
b.SegmentId,
b.Response1,
b.ResponseDescription,
b.ResponseGuidance})
.Where(b => b.SegmentId == 5)
.ToList();
}
}
我尝试将IList 指定为表的实体框架类的名称,但这不起作用。任何帮助都会很棒
【问题讨论】:
-
你为什么还要使用匿名对象?如果您需要将信息从某个地方传递到另一个地方,您应该为这些东西提供字符串名称,以便其他人更容易理解您的代码。创建一个包含所选信息的类,并为每个项目创建该类的实例。
-
使用匿名对象不是个好方法吗?在将数据传递给其他方法/页面/位置时,您可以为此创建一个类。
-
我明白了,也许你可以给我一个例子,因为类已经由 EF Core 创建。我将 linq 作为 ToList() 返回 - 所以一点帮助会很棒。
-
而不是写
new { b.ResponseId, b.SegmentId, b.Response1, b.ResponseDescription, b.ResponseGuidance},只需创建一个具有这些属性的类,然后写new MyClass { ResponseId = b.ResponseId, ... }。 -
我正在尝试在构造函数中执行我的 linq。我将每个表作为一个类(因为 EF 核心无论如何都会创建它们)。我可以用 Var = all day 来做,但这似乎不是最好的方法。我需要找到一种在构造函数中执行 linq 的方法。任何人都可以为我提供一个体面的链接或帮助吗?它不必是匿名的。
标签: c# linq entity-framework-core