public class OnLoginData
{
public List<TableDetails> lstTableDetails { get; set; }
public List<CategoryDetails> lstCategoryDetails { get; set; }
}
public class TableDetails
{
public int TableId { get; set; }
public int TableNumber { get; set; }
public string TableName { get; set; }
}
public partial class CategoryDetails
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public string Description { get; set; }
public string Image { get; set; }
public long? SystemId { get; set; }
public int? SortId { get; set; }
}
var queryLoginAdimin = from admin in conDb.SystemAdminMasters
join system in conDb.SystemMasters on admin.SystemID equals system.SystemId into SM
join category in conDb.MenuCategoryMasters on admin.SystemID equals category.SystemId into CM
join menu in conDb.MenuMasters on admin.SystemID equals menu.SystemId into MM
join table in conDb.TableMasters on admin.SystemID equals table.SystemId into TM
select new OnLoginData
{
lstTableDetails = TM.Select(o => new
{
o.TableId,
o.TableName,
o.TableNumber
}).ToList()
};
请检查上面的代码,我尝试使用多个表进行连接,并且我不需要数据库表中的所有字段。我只需要那些我已经单独上课TableDetails
和CategoryDetails
的字段。我想从linq查询上面选择那些字段,并创建一个On LoginData上的整个List。
我该怎么做?
答案 0 :(得分:0)
您可以通过以下方式查询
var queryLoginAdimin =
from admin in conDb.SystemAdminMasters
join system in conDb.SystemMasters on admin.SystemID equals system.SystemId into SM
join category in conDb.MenuCategoryMasters on admin.SystemID equals category.SystemId into CM
join menu in conDb.MenuMasters on admin.SystemID equals menu.SystemId into MM
select new OnLoginData
{
lstTableDetails = conDb.TableMasters
.Where(table => table.SystemId == admin.SystemID)
.Select(o => new TableDetails
{
TableId = o.TableId,
TableName = o.TableName,
TableNumber = o.TableNumber
}),
//Same for lstCategoryDetails
};
你不能在select里面使用.ToList()这样就可以将OnLoginData更改为IEnumerable
public class OnLoginData
{
public IEnumerable<TableDetails> lstTableDetails { get; set; }
public IEnumerable<CategoryDetails> lstCategoryDetails { get; set; }
}