如何在linq中使用'IN'子句

时间:2014-03-24 05:28:28

标签: linq asp.net-mvc-3 razor

public static List<mainISRC> comedianlist(int iid)
{
     List<mainISRC> newlst = new List<mainISRC>();
     ISRCManagementDBEntities1 dbcontext = new ISRCManagementDBEntities1();
     newlst=(from z in dbcontext.Comedians
             where !(from b in dbcontext.mainISRCs 
             where b.id==iid && b.Actor1==z.Comedian1 || b.Comedian1==z.Comedian1 || b.Comedian3==z.Comedian1 || b.Comedian4==z.Comedian1).Any()
             select z.Comedian1).ToList();            
     return newlst;
}

我有一个名为“喜剧演员”的表名,列'id','喜剧演员'和'IsActive'包含50行数,而且我还有另一个表名为“mainISRC”的列'id','Actor1', 'Actor2', 'Actor3', 'Actor4'。 “actorlist”中的“id”列和“addrecord”中的“iid”列不相同。

我必须找到所有来自“喜剧演员”的“喜剧演员”,这些喜剧演员不在“演员1”,“演员2”,“演员3”,“演员4”栏目中。 Linq对此的查询是什么?

1 个答案:

答案 0 :(得分:1)

最终更新代码

对不起代码未经过测试,但它可以帮助您或给您指示

  List<int> liComedianId = new List<int> ();
liComedianId = dbcontext.Comedians.Select(s => (int)s.Id).ToList();

List<mainISRC> limainISRC = new List<mainISRC> ();
limainISRC = dbcontext.mainISRCs.ToList();

var d = ((from a in limainISRC.Select(s => s.Actor1).ToList()
select a).TolList().Union
            (from b inlimainISRC.Select(s => s.Actorb).ToList()
select b).Tolist()).ToList();
d = d.Distinct();

licomedianId =  licomedianId.Select(s => !d.Contain(s));

List<comedian> LIcomedianFinal = new List<comedian> ();
LIcomedianFinal =  dbcontext.Comedians.ToList();
var FinalList =(from a in  LIcomedianFinal .ToList()
                join b in d.TolIst()
                on a.Id equlas d).ToList();