Bonjour, je cherche à traduire cette requête en Linq sans succès hélas...
Pouvez vous m'aider ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
DELETE FROM ShoppingCart
WHERE CartID IN
(SELECT CartID
 FROM ShoppingCart
 GROUP BY CartID HAVING MIN(DATEDIFF(dd,DateAdded,GETDATE())) >= @Days)
Voici également la signature de ma méthode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public static bool DeleteOldCarts(byte days)
Le byte days correspond au paramètre Days de la requête.

Voici ce que j'ai fait jusqu'à présent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    public static bool DeleteOldCarts(byte days)
    {
        using (var ctx = new BalloonShopDataContext())
        {
            var queryShoppingCart = from a in ctx.ShoppingCart
                                    where
                                        (from shoppingcart0 in ctx.ShoppingCart
                                         group shoppingcart0 by new { shoppingcart0.CartID } into g
                                         select new { g.Key.CartID }).Contains(new { a.CartID }) &&
                                         DateTime.Now.Subtract(a.DateAdded).Days > Convert.ToInt32(days)
                                    select a;
 
            try
            {
                foreach (var del in queryShoppingCart)
                    ctx.ShoppingCart.DeleteOnSubmit(del);
 
                ctx.SubmitChanges();
 
                return true;
            }
            catch
            {
                return false;
            }            
        }


Merci d'avance