簡體   English   中英

Linq 通過將 Id 與具有 id 的對象列表進行比較來獲取列表

[英]Linq query geting list by comparing Id with an list of objects that have ids

我有以下代碼:

var translations = _context.Translations
       Where(t => t.LineId == lines.Id)

我有一個名為lines的變量,它的類型是List<Line>每個Line對象都有Line.Id

現在我有另一個名為Translations的表,我想獲取Line.Id等於lines列表中每個Line.Id的所有 Translations。

如何在單個 LINQ 表達式中完成此操作?

我需要這樣的東西:

 var translations = new List<Translation>();

 foreach (var line in lines)
 {
    var translation =
    _context.Translations.FirstOrDefault(t => t.LineId == line.Id);
    translations.Add(translation);
 }

Line.Id屬性的IEnumerable<T> ,然后在查詢中使用Contains方法的結果:

var lineIDs = lines.Select(l => l.Id).ToArray();

var translations = _context.Translations
    .Where(t => lineIDs.Contains(t.LineId))
    .ToList();

由於您只需要那些 ID 存在於lines中的翻譯,這將為您提供您想要的:

var translations = from translation in _context.Translations
                   join line in lines on translation.LineID equals line.LineID
                   select translation;

join將比為Translations “表”中的每個項目調用 LINQ 查詢更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM