Linq表数据库类和List <t> </t>之间

时间:2014-06-06 02:52:02

标签: c# sql asp.net-mvc linq

我有一份我在会话中保留的信息列表。想要LINQ加入此列表和数据库表。

结果即将重置,没有。我做错了什么?

列表类别:

public class ASOProcedimentoTemp
{
    public int FuncionarioID { get; set; }
    public int ProcedimentoID { get; set; }
}

表数据库类:

public class ASOProcedimento : IEntidadeBase
{
    [Key]
    public int ASOProcedimentoID { get; set; }
    public int ASOID { get; set; }
    [ForeignKey("ASOID")]
    public virtual ASO ASO { get; set; }
    public int ProcedimentoID { get; set; }
    [ForeignKey("ProcedimentoID")]
    public virtual Procedimento Procedimento { get; set; }
    public DateTime DtProcedimento { get; set; }
}

我的LINQ:

var dadosTemp = HttpContext.Current.Session["ASOProcedimentoTemp"] as List<ASOProcedimentoTemp>;
if (dadosTemp == null)
    dadosTemp = new List<ASOProcedimentoTemp>();

result =
    (from a in dados.AsQueryable()
        join b in dadosTemp on a.ProcedimentoID equals b.ProcedimentoID
        select new 
        {
        a.ProcedimentoID,
        a.Procedimento.Descricao
        })
    .Where(where, filtro)
    .OrderBy(orderna + " " + ordenaTipo);

1 个答案:

答案 0 :(得分:1)

Contains将在sql调用中导致带有ID的SQL Where In子句。

var dadosTemp = HttpContext.Current.Session["ASOProcedimentoTemp"] as List<ASOProcedimentoTemp>;
if (dadosTemp == null)
    dadosTemp = new List<ASOProcedimentoTemp>();

var procedimentoIDs = dadosTemp.Select(a => a.ProcedimentoID).ToList();

result =
    (from a in dados
        where procedimentoIDs.Contains(a.ProcedimentoID)
        select new 
        {
        a.ProcedimentoID,
        a.Procedimento.Descricao
        });