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对此的查询是什么?
答案 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();