gpt4 book ai didi

c# - LINQ 查询婴儿步骤

转载 作者:太空狗 更新时间:2023-10-30 00:11:21 25 4
gpt4 key购买 nike

我有以下代码。它运行良好。

在我标记的地方,我想编写一个查询(我假设使用 LINQ)提取 CompanyName where 主键 == 3028

我怀疑这是微不足道的,但我是 LINQ 的新手,我在 MSDN 上查找了一些基本的 LINQ 信息|似乎无法让它发挥作用。

namespace EntityFrameworkExperiment {
class Program {

static void Main(string[] args) {
var models = SelectTop100Models("SELECT top 100 * FROM WH.dbo.vw_DimXXX");
Console.Write("hello world");

//<<<<<<<linq query to pull out companyname when MainKey == 3028

Console.Read();
}

static IEnumerable<MyModel> SelectTop100Models(string myCommandText) {
var connectionString = ConfigurationManager.ConnectionStrings["XXX"].ConnectionString;
using(var conn = new SqlConnection(connectionString))
using(var cmd = conn.CreateCommand()) {
conn.Open();
cmd.CommandText = myCommandText;
using(var reader = cmd.ExecuteReader()) {
while(reader.Read()) {
yield return new MyModel {

MainKey = reader.GetInt32(reader.GetOrdinal("MainKey")),
ServerId = reader.GetInt32(reader.GetOrdinal("ServerId")),
CompanyId = reader.GetInt32(reader.GetOrdinal("CompanyId")),
CompanyName = reader.GetString(reader.GetOrdinal("CompanyName")),


};
}
}
}
}
}

public class MyModel {

public int MainKey { get; set; }
public int ServerId { get; set; }
public int CompanyId { get; set; }
public string CompanyName { get; set; }

}

}

最佳答案

添加使用System.Linq

查询应该是

var companyName = models
.Where(o => o.MainKey == 3028) // apply the filter
.Select(o => o.CompanyName) // tell it you only need the one property
.FirstOrDefault(); // take the first result it finds or use 'null' if the MainKey does not exist

但是您必须记住一件事 - 在这里您没有对 SQL 服务器使用 LINQ 查询 - 而是检索内存中的所有数据,然后在 .NET 中过滤它们。这意味着如果数据库包含数百万行,它们将全部从 SQL 服务器中提取。您正在申请 TOP 100,但如果 key 3028 不在前 100 名内,这会给您带来麻烦。

您应该做的是使用 Entity Framework(或类似工具)创建模型,然后编写针对由它生成的类的查询。好消息是 LINQ 查询将完全相同 - 它只是在幕后转换为 SQL。

关于c# - LINQ 查询婴儿步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255398/

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