【发布时间】:2021-09-24 04:31:51
【问题描述】:
他们告诉我用 LINQ 编写我用 SQL 查询编写的代码。但我做不到。有知道的可以帮帮我吗?
我的 SQL 代码:
DropDownListInvoiceTown.Items.Clear();
Session["ilID"] = Convert.ToInt32(DropDownListInvoiceCity.SelectedValue);
SqlConnection cnn = new SqlConnection(@"Data Source = ENKITEST; Initial Catalog = FAZIKI; User ID = WebAdmin; Password = !ConAdmin");
SqlCommand kmt = new SqlCommand();
kmt.Connection = cnn;
kmt.CommandText = "SELECT wt.IDTown as IlceID, wt.TownName as IlceAdi FROM ArkadasWebSite.dbo.WebArkadasCities as wc JOIN ArkadasWebSite.dbo.WebArkadasTowns as wt on wc.IDCity = wt.IDTown WHERE wc.IDCity=@DropDownListInvoiceCity ORDER BY wc.CityName";
kmt.Parameters.AddWithValue("@DropDownListInvoiceCity", DropDownListInvoiceCity.SelectedValue);
SqlDataReader oku;
cnn.Open();
oku = kmt.ExecuteReader();
DropDownListInvoiceTown.DataSource = oku;
DropDownListInvoiceTown.DataValueField = "IlceID";
DropDownListInvoiceTown.DataTextField = "IlceAdi";
DropDownListInvoiceTown.DataBind();
cnn.Close();
如果我修复的代码是:
DropDownListInvoiceTown.Items.Clear();
Session["ilID"] = Convert.ToInt32(DropDownListInvoiceCity.SelectedValue);
DropDownListInvoiceTown.DataSource = arkadas.WebArkadasCities.Where(x => x.IDCity == arkadas.WebArkadasTowns.Where(w => w.IDTown == DropDownListInvoiceCity.SelectedValue).Select(w => w.TownName).FirstOrDefault()).Select(x => x.CityName).ToList();
DropDownListInvoiceTown.DataValueField = "IlceID";
DropDownListInvoiceTown.DataTextField = "IlceAdi";
DropDownListInvoiceTown.DataBind();
但它不起作用,所以它返回空。我该怎么做?
【问题讨论】:
-
一个好的开始是找到一个支持 LINQ 的 O/R 映射器。
-
@GertArnold OP 已经在使用 LINQ 映射器,这实际上是他们的全部重点,他们需要帮助将他们之前的 SQL 尝试转换为 LINQ
-
@ChrisSchaller 我没有看到对“LINQ 映射器”的任何引用。是的,
arkadas.WebArkadasCities,但它是什么? 确切地知道使用了哪个 ORM 以及类模型是什么样的,这总是至关重要的。像往常一样,人们开始发布包括连接在内的 LINQ 语句,但如果导航属性到位,这些手动连接几乎没有必要。 -
@GertArnold 实际上是irrelevant使用的是哪个ORM,这个问题是一个简单的将SQL转换为LINQ表达式的请求。是的,连接可能不是必需的,这取决于模型,但如果您愿意,使用它们仍然有效。这里有足够的高质量答案。
-
@burak 您能否更新您的帖子以包含
WebArkadasCities和WebArkadasTowns类的定义,以获得可靠的答案,您可以使用该答案而无需我们做出假设。
标签: c# sql sql-server linq