Я думаю, это то, что вы ищете
List<SIDB_Module> module = SIDB
.SIDB_Modules
.Where(k => transaction.Any(j => j.transactionid == k.moduleid))
.ToList();
Составьте список SIDB_Modules
, где есть транзакция, transactionid
которой равна moduleid
. У LINQ to Sql может быть проблема с Any, я не помню, если это так, вы можете переписать его с дополнительным шагом, подобным этому
var transactionIds = transaction.Select(j => j.transactionid);
List<SIDB_Module> module = SIDB
.SIDB_Modules
.Where(k => transactionIds.Contains(k.moduleid))
.ToList();
Если производительность представляет собой проблему, вы можете рассмотреть возможность использования второго метода и помещения transactionIds
во что-то, что реализует ISet<T>
и имеет постоянный поиск по времени.