Mik*_*bro 6 c# model-view-controller lambda linq-to-sql
我有这4个复选框,它们构成字符串变量saljes,kopes,bytes,erbjudes.检查它们时,它们会获得"打开"值.
从这里我把一个字符串变量(p)放在一起,其中包含我想要包含在LINQ语句中的所有数字.假设如果选中所有复选框,我将得到一个"1234"的字符串,如果只选中复选框2和4,则会产生"24".
在我的数据库中,我有一个名为"Type"的字段,其类型为int.我想告诉数据库包含所有可以在字符串p中找到的"Type"值的行.
像这样的东西(当然我的代码不起作用,因此我需要你们):
var searchResult = from s in db.Ads select s;
string p = "1";
if (saljes != "on")
p = p.Replace("1", "");
if (kopes == "on")
p += "2";
if (bytes == "on")
p += "3";
if (erbjudes == "on")
p += "4";
searchResult = searchResult.Where(s => p.Contains(s => s.Type.ToString());
Run Code Online (Sandbox Code Playgroud)
我有点需要做的是反转Contains(),但是如何?
Contains()已经是“反转 IN”,如下所述:
int[] productList = new int[] { 1, 2, 3, 4 };
var myProducts = from p in db.Products
where productList.Contains(p.ProductID)
select p;
Run Code Online (Sandbox Code Playgroud)
所以只需填写一个列表:
var list = new List<int>();
if (saljes == "on")
list.Add(1);
if (kopes == "on")
list.Add(2);
if (bytes == "on")
list.Add(3);
if (erbjudes == "on")
list.Add(4);
var searchResult = db.Ads.Where(s => list.Contains(s.Type));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |