SQL命令进入linq表达式实体框架

问题描述 投票:1回答:2

我有2张桌子:Oceny_przedmioty和Studenci。 Studenci和Oceny_przedmioty有一个 - 很多(一个学生可以超过1年级)。我需要从这个SQL:

SELECT Oprz_Ocena 
    FROM Oceny_przedmioty 
    UNION SELECT ST_Nr_indeksu 
          FROM Studenci 
          WHERE ST_Nr_indeksu = '11000'

linq表达式Visual Studio将理解的内容。我使用实体框架。我试过这样的事

   var currentGrade= (from Oceny_przedmioty in dbContext.Oceny_przedmioty
                            select Oceny_przedmioty.ID_Studenta).Union
                             (from Studenci in dbContext.Studenci
                              select Studenci.ID_Studenta);

但它甚至不承认Union(不包含Union的定义)。在此先感谢您的帮助!

c# sql-server visual-studio entity-framework linq
2个回答
2
投票

你能尝试这样吗?如果尚未完成,请包含命名空间using System.Linq;

var india = context.Orders.Where(o => o.ShipCountry == "India").Select(o => o);
var usa= context.Orders.Where(o => o.ShipCountry == "USA").Select(o => o);
var IndiaUnionusa = india.Union(usa);

对于你的代码,它会像

 var quer1= (from Oceny_przedmioty in dbContext.Oceny_przedmioty
                            select Oceny_przedmioty.ID_Studenta);
 var query2 = (from Studenci in dbContext.Studenci
                              select Studenci.ID_Studenta);
  var currentGrade = query1.Union(query2);

看起来像int的问题?可空类型

 var quer1= (from Oceny_przedmioty in dbContext.Oceny_przedmioty
                            select Oceny_przedmioty.ID_Studenta)
                            .ToList();
 var query2 = (from Studenci in dbContext.Studenci
                              select Studenci.ID_Studenta)
                             .ToList();
 var currentGrade = query1.Union(query2);

0
投票

谢谢大家的回复!问题还在于查询,这段代码解决了我所有的问题

var query1 = dbContext.Oceny_przedmioty    
           .Join(dbContext.Studenci,
              post => post.ID_Studenta,        
              meta => meta.ID_Studenta,  
              (post, meta) => new { meta.ST_Nr_indeksu, post.OPrz_Ocena })
            .Where(postAndMeta => postAndMeta.ST_Nr_indeksu == 11000);    

       dataGridView1.DataSource = query1.ToList();
© www.soinside.com 2019 - 2024. All rights reserved.