简体   繁体   English

将 LINQ 与列表<> 加入 select 新

[英]Join LINQ with a List<> in select new

hi first time im asking here so il try to do it correctly嗨我第一次在这里问所以我试着正确地做

i have a problem im making a shopping basket and im nearly there but always a but我在制作购物篮时遇到问题,我快到了,但总是

what i want to have is something like this我想要的是这样的

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();
        }

But it does not allow for usage of db and list<> in same query但它不允许在同一查询中使用 db 和 list<>

Solved!解决了! Modified magnus's answer修改后的 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();

Try this:尝试这个:

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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM