在Entity Framework中使用linq提供多个List <int>类型条件

hus*_*nos 5 .net c# linq entity-framework

我正在使用一个使用实体框架的项目.当人们点击searchLookUpedit按钮时我想要简单的事情我想显示根据订单中存在的公司过滤的值.所以这是代码:

private void SearchLookUpEdit_Customer_Click(object sender, EventArgs e)
{
    object [] siparisNo = new object[gridView1.RowCount];
    List<Siparisler> siparisList = new List<Siparisler>();
    List<int> firmaIds = new List<int>();

    for (int i = 0; i < gridView1.RowCount; i++)
    {
        siparisNo[i] = gridView1.GetRowCellValue(i,"SiparisNo");
        int sipNo = Convert.ToInt32(siparisNo[i]);
        Siparisler siparis = context.Siparisler.Where(p => p.Id == sipNo).FirstOrDefault();
        siparisList.Add(siparis);
        firmaIds.Add(siparis.Firma_Id);
    }

    for (int i = 0; i < firmaIds.Count; i++)
    {
        int a = firmaIds[i];
        firmalarBindingSource.DataSource = context.Firmalar.Where(p => p.Id == );
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里第二个循环.让我们假设在firmaIds<int>列表类型中有3个值.并假设它们分别为3,5和8,我想只有这3个公司将在firmalarBindingSource.DataSource 点击事件完成运行后存在.我试过但没有.如果我的标准是不同的数据类型,则很容易过滤.反正有没有这样做?

fab*_*aby 4

如果我明白你在问什么,请尝试更换

 for (int i = 0; i < firmaIds.Count; i++)
 {
     int a = firmaIds[i];
     firmalarBindingSource.DataSource = context.Firmalar.Where(p => p.Id == );
 }
Run Code Online (Sandbox Code Playgroud)

firmalarBindingSource.DataSource = context.Firmalar.Where(p => firmaIds.Contains(p.Id));
Run Code Online (Sandbox Code Playgroud)