EF Core 7 具有多种动态条件

问题描述 投票:0回答:1

大家早上好,首先很抱歉我的英语不好。我使用 EF Core 7,需要通过设置一系列我事先不知道其数量的条件来过滤 SQL 数据库的数据。 这些条件适用于单个列。

如果我有一个条件,我会使用:

trova = (from tr in db.T_ClientiCOLs 
         where tr.Azienda.Contains(t) select tr).ToList();

但是如果我想用不同的条件进行过滤,我该怎么做呢?

我试过了

string[] x = t.Split(' ');
string pSql = "";

foreach (string s in x)
{
    if (string.IsNullOrEmpty(s))
    { 
        continue; 
    }
    else
    {
        if (pSql.Length > 0) 
        { 
            pSql += " AND "; 
        }

        pSql = pSql + " [Azienda] like N'%" + s + "%' ";
    }
}

FormattableString sql = $"SELECT * FROM [dbo].[T_Clienti] WHERE {pSql}";
trova = db.T_Clientis.FromSql(sql).ToList();

但是它不起作用...

c# entity-framework-core where-clause ef-core-7.0
1个回答
0
投票

我弄清楚了如何修改代码:

string[] x = t.Split(' '); var query = db.T_Clientis.AsQueryable(); foreach(x 中的字符串 s) { if (string.IsNullOrEmpty(s)) { 继续; } 别的 { 查询 = query.Where(x => x.Azienda.Contains(s)); } } trova = query.ToList();

© www.soinside.com 2019 - 2024. All rights reserved.