Присоединяйтесь к LINQ со списком <> в выберите новый - PullRequest
3 голосов
/ 02 мая 2011

Привет, в первый раз я спрашиваю здесь, поэтому я попытаюсь сделать это правильно

У меня проблема с тем, что я делаю корзину для покупок, и я почти у цели, но всегда но

, что я хочу иметьэто что-то вроде

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

Но это не позволяет использовать БД и список <> в одном запросе

Решено!Модифицированный ответ Магнуса

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

1 Ответ

1 голос
/ 02 мая 2011

Попробуйте это:

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...