我有一个如下查询
select a.EmployeeName,
STUFF(( SELECT ',' + camTable.DepartmentName AS [text()]
FROM EmpoyeeDepartment subTable
left join DepartmentTable camTable on subTable.DepartmentID = camTable.DepartmentID
WHERE
subTable.EmployeeID = a.EmployeeID
FOR XML PATH('')
), 1, 1, '' )
AS Departments
from
EmployeeTable a
where a.EmployeeID = 144025
group by EmployeeName, Departments
Run Code Online (Sandbox Code Playgroud)
但是当我执行上面的sql时,出现了一个错误:
Column 'EmployeeTable.EmployeeID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Run Code Online (Sandbox Code Playgroud)
预期结果:

上面的sql有什么问题?
下面是View中出现错误的简化代码:
模型:
public class Employee
{
public string EmployeeID{ get; set; }
public string Name { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Index()
{
var model = selectAllEmployees();
ViewBag.ITDept = model.Where(a => a.departmentID == 4);
ViewBag.Officer = model.Where(a => a.departmentID == 5);
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
视图:
@model IList<EnrolSys.Models.Employee>
@{
Layout = null;
}
@using (Html.BeginForm("Save", "EmployMaster"))
{
for (int i = 0; i < ViewBag.ITDept.Count(); i++)
{
//Here's the error occurs
@Html.Partial("EmployeeDisplayControl", ViewBag.ITDept[i])
}
<br />
}
Run Code Online (Sandbox Code Playgroud)
在该行中 …
以下例外飞行
LINQ to Entities无法识别方法'Boolean Contains(Int32)'方法,并且此方法无法转换为商店表达式.
在尝试执行以下查询时
List<int> studentIDs = Common.getFilterStudents();
var query = from a in studentTable
where studentIDs.Contains(a.StudentID)
select a;
Run Code Online (Sandbox Code Playgroud)
如何使用studentIDs列表过滤查询?
表A结构:

表B结构:

上面是两个表,TableB.TableARelationID是一个用于映射表A的relationID.
期望的输出:

所需的结果将是TableA.RecordID和TableB.Text,但只有表B中的Type 2,即忽略Type 1
下面是我使用的SQL查询:
SELECT tablea.recordid,
tableb.text
FROM tablea
LEFT JOIN tableb
ON tablea.relationid = tableb.tablearelationid
WHERE type = 2
Run Code Online (Sandbox Code Playgroud)
但上面的查询会输出:

即,删除了RecordID 1,因为"where"子句被过滤了.
那么如何从表A中显示RecordID 1?
我在 asp.net 文本框中进行验证,文本框只允许用户输入数字
IE
有效数字:
1234
12.345
12,345,678.231
12,345,678
Run Code Online (Sandbox Code Playgroud)
无效数字:
-1234
12.23.45.67
12,
12,34,56
12,345,6
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用正则表达式通过以下正则表达式在客户端验证用户的输入:
^(?=.+)(?:[1-9]\d*|0)?(?:\.\d+)?$
Run Code Online (Sandbox Code Playgroud)
问题是:
上述正则表达式仅认为以下有效:
1234
12.345
Run Code Online (Sandbox Code Playgroud)
如何修改上面的正则表达式以检查千位分隔符是否输入正确的位置?
我想问一下如何使用 sftp 远程删除文件我尝试过使用 SharpSSH 但它不起作用,我得到了 SftpException
我首先在 sftp.cs 中添加了此代码
Run Code Online (Sandbox Code Playgroud)public void Delete(string path) { SftpChannel.rm(path); }
然后我在程序中输入了这个
Sftp ftp = new Sftp("ip 地址", "用户名", "密码"); ftp.Connect(); ftp.Delete("路径");
谢谢,问题解决了问题是我忘记在路径前面放一个“/”,所以它失败了
我在下面的结构中有一个List:
Tuple<string, string>
Run Code Online (Sandbox Code Playgroud)
像这样:
我想加入列表,形成如下字符串:
['A', '1'],['B', '2'], ['C', '3']...
Run Code Online (Sandbox Code Playgroud)
我现在使用下面的代码来做:
string result = "";
for (int i = 0; i < list.Count; i++)
{
result += "[ '" + list[i].Item1 + "', '" + list[i].Item2 + "'],";
}
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但想问是否有更好的方法可以做到这一点?
以下是生成下拉列表的代码(在View中)
@Html.DropDownList("feeTypes", null, new { @disabled = false })
Run Code Online (Sandbox Code Playgroud)
当我将false更改为true时,上面的行很好用,但是当我将false设置为false时,它也被禁用(即,无论我输入true还是false,下拉列表始终处于禁用状态)
为什么会发生上述情况?
我真正想要做的是制作一个可以通过编程启用或禁用的下拉列表,还有其他方法可以实现吗?
下面是标记页面
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<table>
<tr>
<td>
<label>File name<label>
</td>
</tr>
<tr>
<td>
<asp:TextBox runat="server" ID="txtName" Width="150%"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<label>File</label>
</td>
<td>
<asp:FileUpload runat="server" ID="fileUpload" />
</td>
</tr>
</table>
<asp:Button runat="server" ID="btnUpload" Text="Upload file" OnClick="btnUpload_Click" />
</div>
<div class="panel-heading">File display</div>
<div class="panel-body">
<asp:GridView runat="server">
</asp:GridView>
<asp:Button runat="server" ID="btnRefresh" Text="Refresh" OnClick="btnRefresh_Click" />
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
与上面的代码,当用户点击"btnUpload",就会有一个回,但有一个更新面板,以防止后回来,当我改变了PostBackTrigger到AsyncPostBackTrigger,页面没有贴背,但fileUpload.HasFile将为false并且无法获取该文件.
上面的代码出了什么问题?为什么postBackTrigger会触发回发帖?
我有一个如下存储过程:
ALTER procedure [dbo].[test_stored_procedure]
@id nvarchar(20),
@datefm datetime,
@dateto datetime
as
...
end
Run Code Online (Sandbox Code Playgroud)
然后我试图使用下面的SQL调用上面的存储过程:
exec test_stored_procedure @searchKey, cast('1900-01-01 00:00:00' as datetime), cast('1900-01-01 00:00:00' as datetime)
Run Code Online (Sandbox Code Playgroud)
但是当执行时,我得到以下错误:
Incorrect syntax near '1900-01-01 00:00:00'.
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
c# ×6
asp.net ×2
asp.net-mvc ×2
sql ×2
sql-server ×2
file-upload ×1
html-select ×1
join ×1
left-join ×1
linq ×1
regex ×1
select ×1
sftp ×1
sharpssh ×1
string ×1
t-sql ×1
validation ×1
where-clause ×1