Tag: sql

如果LINQ中的列为空,如何忽略’where’和’order by’条件

我有事务对象列表,并希望根据用户当前查看的视图按特定条件对它们进行排序。 我遇到的问题是,为了在where子句中添加条件,首先我需要检查它是否为null以防止空指针exception。 这会导致过滤掉列null的记录(我希望将它们包含在列表的底部)。 我如何修改查询,以便它忽略条件(where和order by),如果该列为null并仍然将它们附加到结果集? 这是一个示例查询: transactions = transactions .Where(t => t.PurchaseRequisition != null && t.Award != null && t.PurchaseRequisition.RequisitionedBy != null) .OrderBy(t => t.Award.ContractNumber). ThenBy(t => ToSafeString(t.Award.ContractNumber)). ThenBy(t => ToSafeString(t.PurchaseRequisition.RequisitionedBy.FullName)); public string ToSafeString(string s) { return s ?? String.Empty; } //我希望将PurchaseRequisition或Award为null的记录附加到结果集。

在azure上发布时列名无效

您好我在azure上发布了一个应用程序。 当我尝试访问BookDetail页面时,我收到InvalidColumn “Borrowed”错误。 在具有PhoneNumber和Password列的UserDetail页面上也会发生同样的事情。 这是BookDetail getmethod public IQueryable GetBook([QueryString(“BookID”)] int? BookID) { var _db = new WebApplication1.Models.LibraryContext(); IQueryable query = _db.Books; if (BookID.HasValue && BookID > 0) { query = query.Where(p => p.BookID == BookID); } else { query = null; } if (query == null || query.Count() == 0) { inputUserBorrow.Visible = false; inputUserBorrowButton.Visible […]

Linq – 里面包括

我知道这不会像写的那样工作,但我很难看到正确的答案,而这个非function性的代码有望说明我正在努力实现的目标: var defaults = _cilQueryContext.DefaultCharges .Where(dc => dc.ChargingSchedule_RowId == cs.RowId); List devTypes = defaults.Select(dc => dc.DevelopmentType) .Include(d => d.DefaultCharges) .Include(d => d.OverrideCharges.Where(oc => oc.ChargingSchedule_RowId == cs.RowId)) .Include(d => d.OverrideCharges.Select(o => o.Zone)) .ToList(); 从本质上讲,我认为这需要一个连接,但是当我试图选择包含两个相关类型的子节点的父对象时,我看不出连接的“select new”子句会有什么。

Linq选择Item,它在另一个表中等于ID

我不确定这是多么可能,但我有两个表,我想通过表1的值从表2中获取一个值。 表1有一个名为“rank”的外键,它是一个int 。 表2有一个名为“name”的值,它是一个string 。 现在表1的“等级”与表2的“ID”相关。 所以,当我说 var result = db.Table1.Select(x => new { x.name, x.rank }).ToList(); //Bob – 2 我真的想说些什么 var result = db.Table1.Select(x => new { x.name, Table2.rank.Where(ID == x.rank) }).ToList(); //Bob – Gold 我仍然是LINQ的新手,我不知道如何在这样的查询中从其他表中获取rank的字符串值。 编辑 我正在使用的表及其关系值。 用户:ID(PK),s1elo(FK到PastElos),冠军(FK到ChampionList),elo(FK到EloList) PastElo:ID(PK),排名 冠军名单:ID(PK),名称 EloList:ID(PK),Rank 用户和PastElo的工作示例 var result = db.Users.Join(db.PastEloes, x => x.s1elo, y => y.ID, (x, […]

从查询中检索单个值

我正在尝试根据字符串字段用户名从单个表中检索整数值。 我已经尝试使用存储过程和直接文本。 当我执行存储过程时,我得到正确的返回值; 然而,正确的结果并没有通过。 以下是两组代码 – 直接文本 – public int GetUserRole(string CUSER) { try { SQLCON = new SqlConnection(connectionString); SQLCON.Open(); SQLCommand = new SqlCommand(); SQLCommand.CommandType = CommandType.Text; SQLCommand.Parameters.Add(“USUsername”, SqlDbType.VarChar).Value = CUSER; SQLCommand.CommandText = “SELECT USRole FROM tblUser WHERE USUsername = CUSER”; Int32 USRole = (Int32) SQLCommand.ExecuteScalar(); return USRole; } catch { HttpContext.Current.Response.Redirect(“~/ErrorRedirect.aspx”, false); return 0; […]

SqlQuery进入字段?

我有一个工作得很好的实体,但后来我需要处理另一个来自另一个表的属性。 我没有能够创建一个View,所以我想只添加一个[NotMapped]字段然后使用Context.Database.SqlQuery来执行我的自定义语句并返回所有正常字段和这个新字段。 换句话说,这样的事情: public class Employee { public int EmployeeId { get; set; } public string EmployeeName { get; set; } [NotMapped] public string CustomerName { get; set; } } public List GetEmployees() { using (MyContext context = new MyContext()) { return context.Database.SqlQuery(“select E.EmployeeId, E.EmployeeName, C.CustomerName from Employee E left join Customer C on E.CustomerId […]

如何将值从存储过程返回到EF

我试图通过EF调用存储过程并从存储过程中检索返回值。 我用这个答案作为指导。 这是我的存储过程: CREATE PROCEDURE [dbo].[usp_test] ( @result int OUT ) AS BEGIN –DO STUFF SET @result = 0 END 以下是我如何从EF调用它: var status = new SqlParameter { ParameterName = “result”, DbType = DbType.Int32, Direction = ParameterDirection.Output }; var result = context.Database.SqlQuery(“EXEC usp_test @result”, status); var wasSuccessful = result.First() == 1; if (!wasSuccessful) { //DO STUFF […]

创建一个新的匿名类型列表以联合到现有的匿名类型列表

我有一个从数据库中获取的匿名类型列表: var takenChannels = (from b in bq.GetStuff(db) where b.RecordType == “H” && b.TourStartDateTime.Date == date select new { Start = b.TourStartDateTime, End = b.TourEndDateTime, Channel = b.RadioChannel, TourArea = b.TourArea }).ToList(); 然后我使用这个列表信息在foreach循环中做一些事情。 我想在这个列表中添加一个新的匿名项目,当我回到循环中时。 就像是: takenChannels.Union{new[] { new{Start = DateTime.Now, End = DateTime.Now.AddDays(1), Channel = 25, TourArea = “Area” }}); 显然这不起作用。 我该怎么做? 编辑1: takenChannels.Add(new { […]

SQL报告:空参数

我发现在SQL Reporting中可能存在问题。 我的页面上有一个ReportViewer,我使用以下方法发送参数: List myParams = new List(); myParams.Add(new ReportParameter(“Start_Date”, StartDate)); myParams.Add(new ReportParameter(“End_Date”, EndDate)); ReportViewer1.ServerReport.SetParameters(myParams); 这很棒! 但是,当我尝试将参数设置为null时,在运行该查询之后,它会保留先前的值而不是将其设置为null。 我在上面代码之后执行的另一个事件上运行此代码: List myParams = new List(); myParams.Add(new ReportParameter(“Start_Date”)); // I even tried omiting this line. //(This is the null parameter I wish to pass) myParams.Add(new ReportParameter(“End_Date”, EndDate)); ReportViewer1.ServerReport.SetParameters(myParams); 有没有人遇到过工作或者采用不同的技术来实现这项工作? 另外,如果我最初没有定义参数,那么分配参数,然后不定义参数,它保持分配的值。 (这些都是回发,每个事件)

获取刚刚插入的记录的ID?

我正在处理用户从gridview中选择的项目,并执行电子邮件和数据库插入操作。 当用户选择按钮时,下面的代码从gridview获取信息,在Order表中创建新订单,并在Transactions表中创建新条目。 如果我使用这种插入记录的方法,如何获取最后插入的ID? 你会推荐一种解决这个简单问题的方法吗? protected void btnOrder_Click(object sender, EventArgs e) { double Total = 0; string MailFrom = “webadmin@domain.com”; string MailTo = “purchasing@domain.com”; string MailSubject = “Online Order”; string MailCC = “”; string MailBCC = “”; string MailReplyTo = “”; string MailBody = “”; TextBox ItmCostCode = (TextBox)form1.FindControl(“txtCostCode”); foreach (GridViewRow gvr in GridView1.Rows) { CheckBox […]