用list连接LINQ <>在select new中

本文关键字:select new list 连接 LINQ | 更新日期: 2023-09-27 17:54:38

这是我第一次问这个问题,所以我会尽量做正确的

我有一个问题,我在做一个购物篮,我快到那里了,但总是一个但是

我想要的是这样的

List<HKurv> KurvInnhold = (List<HKurv>)Session["KurvInnhold"];
DataClasses1DataContext db = new DataClasses1DataContext();
if (Session["KurvInnhold"] != null)
        {
            var query = from a in db.Cabinets
                        from b in db.Commodities
                        from e in db.sArticleNumbers
                        from d in KurvInnhold
                        where
                        d.VareKjøpt.Contains(e.ArtNum) &&
                        a.ArticleNumberID == e.ID &&
                        a.ArticleNumberID == b.ArticleNumberID
                        select new
                        {
                            BestiltAntall = d.AntallValgt,
                            Price = b.Price,
                            ModelName = a.ModelName,
                        };
            Handlekurv1.DataSource = query;
            Handlekurv1.DataBind();
        }

但是不允许在同一个查询中使用db和list<>

解决!修改magnus的回答

            var kjopKollonne = from p in KurvInnhold
                               select p.VareKjøpt;
            var query1 = (from a in db.Cabinets
                         from b in db.Commodities
                         from e in db.sArticleNumbers
                         where
                         kjopKollonne.Contains(e.ArtNum) &&
                         a.ArticleNumberID == e.ID &&
                         a.ArticleNumberID == b.ArticleNumberID
                        select new
                         {
                              ArtNum = e.ArtNum,
                              Price = b.Price,
                              ModelName = a.ModelName,
                         }).ToList();
            var query2 = from a in query1
                         join b in KurvInnhold on a.ArtNum equals b.VareKjøpt
                         select new
                         {
                              BestiltAntall = b.AntallValgt,
                              Price = a.Price,
                              ModelName = a.ModelName,
                         };
            Handlekurv1.DataSource = query2;
            Handlekurv1.DataBind();

用list连接LINQ <>在select new中

试试这个:

var query1 = from a in db.Cabinets
  from b in db.Commodities
  from e in db.sArticleNumbers
  from d in KurvInnhold
  where
  KurvInnhold.Select(k => k.VareKjøpt).Contains(e.ArtNum) &&
  a.ArticleNumberID == e.ID &&
  a.ArticleNumberID == b.ArticleNumberID
 select new
  {
       ArtNum = e.ArtNum,
       Price = b.Price,
       ModelName = a.ModelName,
  }.ToList();
var query2 = 
  from a in query1
  join b in KurvInnhold on a.ArtNum equals b.VareKjøpt
  select new
  {
       BestiltAntall = b.AntallValgt,
       Price = a.Price,
       ModelName = a.ModelName,
  };
Handlekurv1.DataSource = query2;
Handlekurv1.DataBind();