C# lambda表达式中的多个表

C# lambda表达式中的多个表,c#,linq,lambda,C#,Linq,Lambda,我试图使用lambda表达式从数据库中获取数据,但我不知道如何使用多个表 在SQL中,我会这样写: SELECT item.* FROM Item item, ItemListType listType WHERE listType.DisplayName = 'student' AND listType.ID = item.ItemListTypeId 但是我怎样才能把它转换成lambda表达式呢 Item表列:ID,ItemListTypeId ItemListType表列:ID,N

我试图使用lambda表达式从数据库中获取数据,但我不知道如何使用多个表

在SQL中,我会这样写:

SELECT item.* 
FROM Item item, ItemListType listType 
WHERE listType.DisplayName = 'student' AND listType.ID = item.ItemListTypeId
但是我怎样才能把它转换成lambda表达式呢

  • Item
    表列:
    ID,ItemListTypeId
  • ItemListType
    表列:
    ID,Name
我调用一个函数并传递一个名称(存在于
ItemListType
中)。我已经设法编写了一个查询来获取
ItemListType
,但我不知道如何在LINQ查询中使用多个表:

ItemListType result = await this.ItemListTypes
           .Include(i => i.Items).SingleAsync(i => i.Name == name);

可以在嵌套的from子句中使用多个表

但最好创建内部联接查询:

lambda语法中相同:

db.ItemListType
  .Where(lt => lt.DisplayName == "student")
  .Join(db.Item, lt => lt.ID, i => i.ItemListTypeId, (lt,i) => i)
或者,如果您具有ItemListType中项目的导航属性:

db.ItemListType
  .Where(lt => lt.DisplayName == "student")
  .SelectMany(lt => lt.Items)    

伟大的我只是不知道如何在lambda中使用它。这就是我现在拥有的:itemlisttyperesult=wait this.ItemListTypes.Include(I=>I.Items).SingleAsync(I=>I.Name==Name)@类似于
等待db.ItemListTypes.Where(lt=>lt.DisplayName==“student”).Join(db.Items,lt=>lt.ID,i=>i.ItemListTypeId,(lt,i=>i).ToListAsync()
@testheruler或者如果您有导航属性:
等待这个.ItemListTypes.Where(lt=>lt.DisplayName==“student”).SelectMany(lt=>lt=>lt.Items).ToListAsync()
非常感谢!那正是我要找的for@TempTheRuler不客气。下次请提供您的代码,并说明为什么它不工作(错误或结果不是您期望的)。这对我们来说是非常有用的信息,可以提供更准确的答案
db.ItemListType
  .Where(lt => lt.DisplayName == "student")
  .Join(db.Item, lt => lt.ID, i => i.ItemListTypeId, (lt,i) => i)
db.ItemListType
  .Where(lt => lt.DisplayName == "student")
  .SelectMany(lt => lt.Items)