gpt4 book ai didi

c# - 如何从使用 LINQ to SQL 的方法返回查询结果

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:09 25 4
gpt4 key购买 nike

这是我正在使用的代码,我对 LINQ 还是有点陌生​​,所以这是一项正在进行的工作。具体来说,我想从此查询中获取结果(大约 7 列字符串、整数和日期时间),并将它们返回到调用包含此 LINQ to SQL 查询的方法的方法。一个简单的代码示例将非常有帮助。

using (ormDataContext context = new ormDataContext(connStr))
{
var electionInfo = from t1 in context.elections
join t2 in context.election_status
on t1.statusID equals t2.statusID
select new { t1, t2 };
}

(在这种情况下,我的查询返回 2 个表的所有内容,election 和 election_status。)

最佳答案

Specifically, I'd like to get my results from this query (about 7 columns of strings, ints, and datetime), and return them

您好,您的查询遇到的问题是您正在创建匿名类型。您不能从方法返回匿名类型,因此这就是您遇到麻烦的地方。

您需要做的是创建一个可以接受选举和选举状态的“包装器”类型,然后返回它们。

这是我所说的一些例子;如您所见,我声明了一个 Tuple 类。您将在其中包装查询的方法返回一个 IEnumerable。

我希望这对您有所帮助:-)

class Tuple
{
Election election;
Election_status election_status;

public Tuple(Election election, Election_status election_status)
{
this.election = election;
this.election_status = election_status;
}
}

public IEnumerable<Tuple> getElections()
{
IEnumerable<Tuple> result = null;

using (ormDataContext context = new ormDataContext(connStr))
{
result = from t1 in context.elections
join t2 in context.election_status
on t1.statusID equals t2.statusID
select new Tuple(t1, t2);
}
}

更新

根据 NagaMensch 的评论,获得预期结果的更好方法是使用内置的 LINQ to SQL 关联。

如果转到实体图并单击工具箱,您将看到 3 个选项。类、关联和继承。我们想使用关联

  • 单击 Association 并单击 ElectionStatus 实体,按住鼠标按钮,这将允许您画一条线到 Election 实体。

  • 一旦您划定界线,它会询问您关联中涉及哪些属性。您想要从 Election 实体中选择 StatusId 列,并从 ElectionStatus 实体中选择 StatusId 列。

现在您已经完成了映射,您将能够大大简化您的查询,因为连接不是必需的。您可以通过 LINQ to SQL 将添加到选举实体的全新属性访问选举状态。

您的代码现在看起来像这样:

//context has to be moved outside the function
static ExampleDataContext context = new ExampleDataContext();

//Here we can return an IEnumerable of Election now, instead of using the Tuple class
public static IEnumerable<Election> getElections()
{
return from election in context.Elections
select election;
}

static void Main(string[] args)
{
//get the elections
var elections = getElections();

//lets go through the elections
foreach (var election in elections)
{
//here we can access election status via the ElectionStatus property
Console.WriteLine("Election name: {0}; Election status: {1}", election.ElectionName, election.ElectionStatus.StatusDescription);
}
}

您还可以在 LINQ to SQL 关联上找到“操作方法”here .

注意:值得一提的是,如果您在数据库中的表之间设置了 FK 关系; LINQ to SQL 将自动选择关系并为您映射关联(因此创建属性)。

关于c# - 如何从使用 LINQ to SQL 的方法返回查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com