Toon posts:

Dubbele gegevens verwijderen uit database

Pagina: 1
Acties:

Onderwerpen


  • kokkie20
  • Registratie: december 2009
  • Laatst online: 16:07
Hallo,
Ik ben in me laatste week van mijn stage, en ben nu bezig met een opdracht voor import van een webshop.
De producten worden geimporteerd, en aan de hand van een SkuNumber (geen idee wat het is maar goed) worden de tabellen aan elkaar gekoppeld.
Maar nu zit ik met een probleem.

Wij krijgen van een groothandel een csv bestand binnen met allemaal gegevens.
Ook zit er een csv bestand in met afbeeldingen van het product.
Het importeren e.d. gaat allemaal goed, maar er zitten nog een grote aantal dubbele records in (dubbele SkuNumber).
Die willen wij eruit gaan filteren.

Ik heb al wat geprobeerd met LINQ (daar moeten wij hier mee werken) maar krijg het alleen niet voor elkaar.

Hierbij mijn code ervoor:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static ProductPhotoViewImport GetDoubleSkuNumbersImport()
        {
            using (var db = DataContextManager.GetInstance())
            {
                var query = (from t in db.ImportProductImages
                             where t.ProductSkuNumber.Count() > 1
                             orderby t.ProductSkuNumber
                             select t.ProductSkuNumber.First());
                foreach (var ProductSkuNumber in query)
                {
                    db.ImportProductImages.DeleteOnSubmit(ProductSkuNumber);
                }
                    db.SubmitChanges();
            }
        }


Maar krijg 2 errors bij "db.ImportProductImages.DeleteOnSubmit(ProductSkuNumber);"
Dit zijn de errors:

Error 1 The best overloaded method match for 'System.Data.Linq.Table<xxxxxx.Web.WebshopAdmin.DataLayer.ImportProductImage>.DeleteOnSubmit(xxxxxx. Web.WebshopAdmin.DataLayer.ImportProductImage)' has some invalid arguments D:\SVN\WebshopAdmin\BusinessLayer\BusinessObjects\ProductPhotoObject.cs 56 21 BusinessLayer


Error 2 Argument '1': cannot convert from 'string' to 'xxxxxx.Web.WebshopAdmin.DataLayer.ImportProductImage' D:\SVN\WebshopAdmin\BusinessLayer\BusinessObjects\ProductPhotoObject.cs 56 59 BusinessLayer

Mijn stagebegeleider die mag mij niet meer helpen van de directeur (geen idee waarom, wilt hij niet meer) dus zit nu momenteel met me handen in het haar |:(

Ik hoop dat jullie me ermee kunnen helpen.

Bedankt,

Kokkie20

  • kokkie20
  • Registratie: december 2009
  • Laatst online: 16:07
@TECHcrime,
de query werkt wel goed, maar krijg het niet voor elkaar om 1 record van de dubbele record te verwijderen (door die deleteonsubmit.

@creepy
heb al geprobeerd zonder de foreach, deletallonsubmit geprobeerd, de first weggehaald. Maar heeft nog weinig resultaat gebracht.
Ben zelf pas ongeveer 2 maanden bezig met C# dus heb niet veel basiskennis ;)
Ik zeg ook niet dat jullie het moeten oplossen ;)

Maar ik snap niet waar die string dan vandaan moet komen :S

  • kokkie20
  • Registratie: december 2009
  • Laatst online: 16:07
heb de first nu verplaatst,
Heb nu dit:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        public static ProductPhotoViewImport GetDoubleSkuNumbersImport()
        {
            using (var db = DataContextManager.GetInstance())
            {
                var query = (from t in db.ImportProductImages
                            where t.ProductSkuNumber.Count() > 1
                            orderby t.ProductSkuNumber
                             select t.ProductSkuNumber).First();
                foreach (ImportProductImage ProductSkuNumber in query)
                {
                    db.ImportProductImages.DeleteOnSubmit(ProductSkuNumber);
                }
                    db.SubmitChanges();
            }
        }


Want zover ik begreep wat ik bij de foreach loop deed was de variabel ProductSkuNumber meegeven,
Maar nu ik dit heb krijg ik deze error:

Error 1 Cannot convert type 'char' to 'xxxxxx.Web.WebshopAdmin.DataLayer.ImportProductImage' D:\SVN\WebshopAdmin\BusinessLayer\BusinessObjects\ProductPhotoObject.cs 55 17 BusinessLayer

kom volgens mij al in de buurt

  • kokkie20
  • Registratie: december 2009
  • Laatst online: 16:07
wil hem wel in de debugger laten lopen, maar gaat niet lukken als ik nog errors open heb staan.
Vind ik ook, volgens de directeur is hij "veels te druk". (niet dus....)

@mastermind

Heb nog geen relaties toegevoegd, dat is de volgende stap als ik dit probleem heb opgelost.
Ben nu nog bezig om dit op te lossen (dat hij die dubbele eruit haalt)



een iteratie ?

Dont blaim me btw over die tabel,
Kreeg hem zo geleverd van me stage begeleider

[Voor 71% gewijzigd door kokkie20 op 02-11-2010 11:06]


  • kokkie20
  • Registratie: december 2009
  • Laatst online: 16:07
ik zal er even naar kijken,
bedankt voor de tips/suggesties :)

  • kokkie20
  • Registratie: december 2009
  • Laatst online: 16:07
Probleem is opgelost door dit:

dataGridView1.DataSource = dt;

in dit te veranderen:
DataTable distinctTable = dt.DefaultView.ToTable(true, "ProductSkuNumber");
dataGridView1.DataSource = distinctTable;
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee