[英]Substituting foreach in linq
我有一個查詢,我想省略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/zh-cn/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();
然后,您將獲得一個包含視圖結果的數據表,該表很容易操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.