Linq to SQL:怎么做WHERE [Column] = LIST中的元素?

时间:2015-05-22 14:56:54

标签: c# linq-to-sql

首先,我看过很多像我这样的帖子,但我找不到答案。

所以,我试着找到等同于" IN" linq to SQL请求的子句,我找到了一些东西:

    IList<int> listClientId = GetAllClientIdByRegionLPS(statutRegion);
    if (!statutRegion.Equals(""))
        q = q.Where(p => listClientId.Contains((int)p.ClientId));

但这让我错了: &#34;&#39; boolean包含(int32)&#39;没有支持的翻译到sql&#34;

我想做什么: 选择 ... 来自...... 在哪里[条件] AND(id == 1 OR id == 2 OR id == 3 OR ...)

让我们看看我的代码:

public IList<Appel> GetAllCourants(string Filter, int? StatutFacturation, int? statutDemande, int? statutPro, string statutRegion)
    {
        var q = from p in DbContext.Appels
                where (p.Client.Nom.Contains(Filter) || p.AppelId.ToString().Contains(Filter) || (p.Materiel.Modele1.Nom + " #" + p.Materiel.NumeroSerie).Contains(Filter) || p.ContactClient.Nom.Contains(Filter) || p.ContactClient.Prenom.Contains(Filter) || p.Dossier.Contains(Filter) || p.Client.CodePostal.Contains(Filter) || p.Client.Ville.Contains(Filter) || p.NumDevis.Contains(Filter))
                select p;
        q = q.Where(p => p.StatutAppelId == 1 || p.StatutAppelId == 9 || p.StatutAppelId == 10 || p.StatutAppelId == 13 || p.StatutAppelId == 14 || p.StatutAppelId == 15 || p.StatutAppelId == 16 || p.StatutAppelId == 17 || p.StatutAppelId == 18);

        if (StatutFacturation.HasValue)
            q = q.Where(p => p.Facturable == StatutFacturation.Value);

        if (statutDemande.HasValue)
            q = q.Where(p => p.StatutDemandePiece == statutDemande.Value);

        if (statutPro.HasValue)
            q = q.Where(p => p.Depot == statutPro.Value);
        //This makes me troubles
        IList<int> listClientId = GetAllClientIdByRegionLPS(statutRegion);
        if (!statutRegion.Equals(""))
            q = q.Where(p => listClientId.Contains((int)p.ClientId)); /*Try to do p.ClientId = listClientId*/

        var ret = q.Select(p => Deserialize<Generated.Appel>(p)).ToList();
        return ret;
    }

我该如何解决这个问题?

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

尝试更改

IList<int> listClientId = GetAllClientIdByRegionLPS(statutRegion);

List<int> listClientId = GetAllClientIdByRegionLPS(statutRegion);