代入linq中的每一个
本文关键字:每一个 linq 代入 | 更新日期: 2023-09-27 18:03:43
我有一个查询,我想省略foreach,使整个查询
我想知道如何在查询内部的查询后实现foreach和所有if子句?
谢谢你的帮助:)
foreach (var item in Filter.EPN)
{
string H = item.Substring(0, 11);
string VH = item.Substring(14, 2);
string S = item.Substring(19, 11);
string VS = item.Substring(33);
ret1 = (from niv in Cniv
from dea in Dniv
.Where(d => niv.niv == d.niv)
let ccc = CTic.FirstOrDefault(c => c.Tic == niv.SMF || c.Tic == dea.SM)
join list in ListM on ccc.mar equals list.marE
where dea.time >= Filter.From && dea.time <= Filter.To &&
niv.H == H && niv.VH == VH && niv.S == S && niv.VS == VS &&
dea.ModelCode == Filter.Model
select new ReportData
{
niv = niv.niv,
Ac = niv.Ac,
});
if (Filter.mar != null && Filter.mar.Count > 0)
{
ret1 = ret1.Where(z => Filter.mar.Contains(z.mar));
}
if (ret1 != null && ret1.ToList().Count > 0)
{
ret.AddRange(ret1);
}
}
你可以创建一个SQL函数来接受你想要添加的参数,所以不要创建一个视图,而是创建一个接受参数的函数,你可以用linq调用它。
在这里查看文章:https://msdn.microsoft.com/en-us/library/bb386954(v=vs.110).aspx
你基本上要做的是创建一个函数它会接受一个字符串作为市场并返回值。如果您正在寻找原始速度,您也可以执行sql命令并返回一个数据表。如果你只是显示数据,这将是最简单的方法。 string connection = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(connection);
con.Open();
var cmd = new SqlCommand("SELECT * FROM myTable where market like" + market variable, con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dataTable = new DataTable();
然后你有一个数据表与你的视图的结果,这是相当容易操作。