我尝试将SQL转换为LINQ查询..并通过LINQ查询我尝试获取data2中的数据有下拉2日历..并且在该下拉列表中有区域所以当我选择区域和日期然后我尝试获取data2中的数据,例如在英国有3个PSB和7个MV。
SELECT distinct count(VName) as data,
tabvv.VName,
tabrv.ID,
FFID,
oname,
regno,
FROM tabrv
join tabre on tabre .RegionID= tabrv.RegionID
join tabvv on tabvv.ID=tabrv.ID
WHERE Region = 'UK' AND
StartDate >= '2014-02-01 00:00:00.000' AND
EndDate <= '2014-02-28 23:59:59.000'
group by
tabvv.VName,
tabrv.ID,
FFID,
oname,
regno
数据库中的数据:
data VName ID FFID oname regno
1 PSB 22 106 ASB AY-50
1 MV 23 102 ASD AS-18
1 24 104 ASFi TM-82
1 25 1072 AED AU-06
1 PSB 26 104 ADF AZ-23
1 MV 27 10 AEF UB-21
1 28 1024 SFS AE-49
1 29 101 QWER AE-53
1 30 109 QWE AV-63
1 MV 31 103 VVBV AL-94
1 MV 32 125 QWEE AY-36
1 33 1292 BGGH AWF-98
1 34 1038 WEQWE WN-81
1 MV 35 105 QWEWQ AQ-98
1 36 109 QWE AWT-88
1 37 01 UIO AX-84
1 38 14 GH AK-18
1 MV 39 09 GHJ XL-13
1 40 1025 HFGHL XW-78
1 MV 41 120 HJK AXY-4
1 PSB 42 100 DG A-18
在上面的数据中,当有vname然后写入1时,但在上面的数据中,某些列中没有Vname,但是提到了1,所以我如何纠正这个。
警告框中的数据(我转换为LINQ的SQL查询):
[WebMethod]
public static string GetVo(int ID)
{
string data2 = "[";
try
{
string fdate = fromdate.Value.Trim().Split('T')[0];
string tdate = todate.Value.Trim().Split('T')[0];
T1 DB = new T1();
var rea = (from rv in DB.tabrv
join Reg in DB.tabre on rv.RegionID equals Reg.RegionID
join vv in DB.tabvv on rv.ID equals vv.ID
where Reg.Region=ID
&& !(vv.VName == "")
&& Reg.StartDate == Convert.ToDateTime(fromdate) &&
Convert.ToDateTime(Reg.EndDate)
group vv by vv.VName into g
select new
{
Name = g.Key,
cnt = g.Select(t => t.Name).Count()
}).ToList();
data2 += rea.ToList().Select(x => "['" + x.Name + "'," + x.cnt + "]")
.Aggregate((a, b) => a + "," + b);
data2 += "]";
}
catch (Exception ex)
{
throw new Exception();
System.Web.HttpContext currentContext = System.Web.HttpContext.Current;
currentContext.Response.Write("<script>alert('" +
currentContext.Server.HtmlEncode(ex.ToString()) + "')</script>");
}
return data2;
}
}
当我构建上面的函数时,这显示错误
错误6运营商'&amp;&amp;'不能应用于'int'和'bool'类型的操作数
错误5非静态字段,方法或属性'abc.WebForm1.todate'
需要对象引用错误4非静态字段,方法或属性'abc.WebForm1.fromdate'
需要对象引用错误7非静态字段,方法或属性'abc.WebForm1.fromdate'
需要对象引用代码:
<asp:DropDownList ID="regiondrop" runat="server" AutoPostBack="True"
onselectedindexchanged="regiondrop_SelectedIndexChanged">
</asp:DropDownList>
<asp:Label ID="Label1" runat="server" Text="From Date"></asp:Label>
<input ID="fromdate" value="mm/dd/yyyy" runat="server" ClientIDMode="static" />
<asp:Label ID="Label2" runat="server" Text="To Date"></asp:Label>
<input ID="todate" value="mm/dd/yyyy" runat="server" ClientIDMode="static" />
<input type="button" ID="search_data" runat="server" class="sear_btn" value="Search Data" OnServerClick="search_data_Click" />
我想在data2中使用这样的数据:
[[PSB,'3'],[MV,'7']]
3和7是因为我运行sql查询时数据中有3个PSB,因为MV是7
现在我像这样访问下拉列表
<script type="text/javascript">
$('#search_data').click(function () {
$.ajax({
type: "POST",
url: "WebForm1.aspx/GetVo",
data: JSON.stringify({ ID: $().val('#regiondrop') }),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function (result) {
alert(result.d);
alert('u');
//start
strArray = result.d;
var myarray = eval(strArray);
$('#container').highcharts({
chart: {
type: 'pie',
options3d: {
enabled: true,
alpha: 45
}
},
title: {
text: 'Contents of Highsoft\'s weekly fruit delivery'
},
subtitle: {
text: '3D donut in Highcharts'
},
plotOptions: {
pie: {
innerSize: 100,
depth: 45
}
},
series: [{
name: 'Delivered amount',
data: myarray
}]
});
//end
},
error: function (error) {
alert(error);
}
});
});
// });
</script>
我如何访问日历?
答案 0 :(得分:0)
1。)对于您的第一个错误(错误6操作员&#39;&amp;&amp;&#39;不能应用于&#39; int&#39;和&#39; bool&类型的操作数#39)。在Where子句中,您有以下内容;
Convert.ToDateTime(Reg.EndDate)
这可能意味着类似
Convert.ToDateTime(Reg.EndDate) == Convert.ToDateTime(todate)
就像你处理startdate一样。 Convert.ToDateTime本身只返回一个DateTime,它不是真/假值,因此是错误。
2。)对于其他三个错误,我认为您必须将所有输入标记更改为asp:TextBox对象,因为代码中的名称无法访问标准输入标记。所以而不是;
<input ID="fromdate" value="mm/dd/yyyy" runat="server" ClientIDMode="static" />
你会有;
<asp:TextBox ID="fromdate" Text="mm/dd/yyyy" runat="server"/>
另一种方法是使用
访问值 Request.Form["fromdate"]