none
Datatable ile if sorgusu RRS feed

  • Soru

  • Merhaba Arkadaşlar,

    Birkaç sorumda cevap alamadım ama ben yine sizlerden yardım istemeye ve biraz olsa da bu işi sizlerden öğrenmeye devam etmek istiyorum.

    Bir xml dosyasını datatable, dataset yardımı ile gridview üzerinde listeliyorum, datatableıma gelen veri satırlarında adetleri 0 olanlar var onları almak istemiyorum nasıl bir şey yapmam gerekiyor sorum belki basit olabilir fakat yapamadım yardımcı olursanız çok sevinirim.

    XmlTextReader GetXML()
            {
                XmlTextReader rdr;
                string UrlString = weblink + txtOrderName.Text.Trim();
                if (MainFRM.Durumu)
                    rdr = new XmlTextReader(opnfl.FileName);
                else
                    rdr = new XmlTextReader(UrlString);
                return rdr;
            }
    
     using (XmlTextReader rdr = GetXML())
                    {
                        if (dturun.Rows.Count == 0) return result = false;
    
                        gridCUrun.DataSource = dturun;// adeti 0 olan satırın listeme 
    dolmasını istemiyorum }

    21 Aralık 2015 Pazartesi 21:40

Yanıtlar

  • Burayı incelermisin. yanıt olabilir.

    kdrgny@outlook.com

    • Yanıt Olarak İşaretleyen csharpp 27 Aralık 2015 Pazar 00:59
    22 Aralık 2015 Salı 22:44
  • Bak giris:

    "Birkaç sorumda cevap alamadım ama ben yine sizlerden yardım istemeye ve biraz olsa da bu işi sizlerden öğrenmeye devam etmek istiyorum."

    Devaminda:

    "Yok mu sorduklarıma cevap verecek ve anlayan kimseler?"

    Bunlar itici seyler. Insanlarin cevap vermemesine nedenlerden birisi boyle sozler. Onun disinda hic dusundun mu, yazdigin soruyu insanlar anlamakta gucluk cekiyordur? Sen anliyorsundur, cunku detaylariyla senin elinde olan bir sorun. Oysa bizler sen ne anlatip gosterirsen sadece o kadarini anlama sansina sahibiz. Bir hikaye anlatmissin ve arada kendince dogru buldugun DataTable, DataSet kullanmissin da, hani nerede o XML'den ornek? En kilit nokta o ve sen onu atlamissin. 

    Sirf bu haliyle cevap vermis olmak icin:

    gridCUrun.DataSource = dtUrun.AsEnumerable().Where( u => u.Field<decimal>("Adet") > 0 ).ToList();

    Ben normalde boyle bir iste ne DataTable, DataSet ne de XmlTextReader kullanmazdim, dogrudan Linq To XML kullanirdim ama XML'den hic bir parcayi goremedigimiz ve sen DataTable'a karar verdigin icin boyle. 


    • Yanıt Olarak Öneren Cihan YakarMVP 23 Aralık 2015 Çarşamba 12:34
    • Yanıt Olarak İşaretleyen Serkan Canseven 23 Aralık 2015 Çarşamba 13:54
    23 Aralık 2015 Çarşamba 10:16
    Yanıtlayıcı
  • Bu soruan sorulardan birisine verdigim cevap, ve bence iyi bir ornek:

    void Main()
    {
      XElement xe = XElement.Parse(MyXML());
      
      var data = from store in xe.DescendantsAndSelf("Transactions")
                 from transaction in store.Elements("transaction")
                 from ct in transaction.Elements("customerTransaction")
                 from ti in ct.Elements("transItem")
                 from its in ti.Elements("itemSale")
                 select new {
                  StoreID = (int)store.Element("storeID"),
                  dateCreated = (DateTime)store.Element("dateCreated"),
                  tillID = (int)transaction.Element("tillID"),
                  transID = (int)transaction.Element("transID"),
                  transDateTime = (DateTime)transaction.Element("transDateTime"),
                  saleType = (int)its.Element("saleType"),
                  product = (string)its.Element("product"),
                  value = (decimal)its.Element("value"),
                  qtySold = (int)its.Element("qtySold")
                 };
      
      data.Dump();
      
    }
    
    private string MyXML()
    {
    return 
    @"<?xml version=""1.0""?>
    <Transactions>
      <storeID>3200</storeID>
      <dateCreated>2014-03-11</dateCreated>
      <transaction>
        <tillID>1001</tillID>
        <assistantID>0001</assistantID>
        <transID>5731</transID>
        <transDateTime>2014-03-11</transDateTime>
        <customerTransaction>
          <transItem>
            <itemSale>
              <saleType>0</saleType>
              <product>5821299900</product>
              <value>4950</value>
              <qtySold>1</qtySold>
            </itemSale>
          </transItem>
          <transItem>
            <itemSale>
              <saleType>1</saleType>
              <product>1234567890</product>
              <value>10000</value>
              <qtySold>20</qtySold>
            </itemSale>
          </transItem>
        </customerTransaction>
      </transaction>
    </Transactions>";
    }

    (Dump LinqPad metodu, kurmadiysan kur) Sonuc soyle:

    (2 items)
    StoreID dateCreated tillID transID transDateTime saleType product value qtySold
    3200 3/11/2014 12:00:00 AM 1001 5731 3/11/2014 12:00:00 AM 0 5821299900 4950 1
    3200 3/11/2014 12:00:00 AM 1001 5731 3/11/2014 12:00:00 AM 1 1234567890 10000 20

    • Yanıt Olarak İşaretleyen csharpp 27 Aralık 2015 Pazar 00:59
    24 Aralık 2015 Perşembe 10:39
    Yanıtlayıcı

Tüm Yanıtlar

  • Yok mu sorduklarıma cevap verecek ve anlayan kimseler?
    22 Aralık 2015 Salı 22:35
  • Burayı incelermisin. yanıt olabilir.

    kdrgny@outlook.com

    • Yanıt Olarak İşaretleyen csharpp 27 Aralık 2015 Pazar 00:59
    22 Aralık 2015 Salı 22:44
  • Bak giris:

    "Birkaç sorumda cevap alamadım ama ben yine sizlerden yardım istemeye ve biraz olsa da bu işi sizlerden öğrenmeye devam etmek istiyorum."

    Devaminda:

    "Yok mu sorduklarıma cevap verecek ve anlayan kimseler?"

    Bunlar itici seyler. Insanlarin cevap vermemesine nedenlerden birisi boyle sozler. Onun disinda hic dusundun mu, yazdigin soruyu insanlar anlamakta gucluk cekiyordur? Sen anliyorsundur, cunku detaylariyla senin elinde olan bir sorun. Oysa bizler sen ne anlatip gosterirsen sadece o kadarini anlama sansina sahibiz. Bir hikaye anlatmissin ve arada kendince dogru buldugun DataTable, DataSet kullanmissin da, hani nerede o XML'den ornek? En kilit nokta o ve sen onu atlamissin. 

    Sirf bu haliyle cevap vermis olmak icin:

    gridCUrun.DataSource = dtUrun.AsEnumerable().Where( u => u.Field<decimal>("Adet") > 0 ).ToList();

    Ben normalde boyle bir iste ne DataTable, DataSet ne de XmlTextReader kullanmazdim, dogrudan Linq To XML kullanirdim ama XML'den hic bir parcayi goremedigimiz ve sen DataTable'a karar verdigin icin boyle. 


    • Yanıt Olarak Öneren Cihan YakarMVP 23 Aralık 2015 Çarşamba 12:34
    • Yanıt Olarak İşaretleyen Serkan Canseven 23 Aralık 2015 Çarşamba 13:54
    23 Aralık 2015 Çarşamba 10:16
    Yanıtlayıcı
  • Cevabınız için çok teşekkür ederim sizleri küstürdüysem de özür dilerim biraz daha dikkatli olurum yazılımı yeni öğrendiğim için sorumu nasıl soracağımı inanın baya düşünerek sormaya çalışıyorum bazen kendimde anlayamıyorum ya :) cevabınız için tekrar teşekkür ederim Ling1 To xml kullanmaya çalıştım fakat xml okadar karışık ki çıkamadım için den xml listemde alt alta alt alta grupları oluşturulmuş ben her birine tablo diyorum çünkü içinden seçerek her bir tabloyu ayrı tabloya gönderiyorum. eğer iyi bir örnek var ise linkini gönderirseniz çok sevinirim.
    24 Aralık 2015 Perşembe 09:08
  • Bu soruan sorulardan birisine verdigim cevap, ve bence iyi bir ornek:

    void Main()
    {
      XElement xe = XElement.Parse(MyXML());
      
      var data = from store in xe.DescendantsAndSelf("Transactions")
                 from transaction in store.Elements("transaction")
                 from ct in transaction.Elements("customerTransaction")
                 from ti in ct.Elements("transItem")
                 from its in ti.Elements("itemSale")
                 select new {
                  StoreID = (int)store.Element("storeID"),
                  dateCreated = (DateTime)store.Element("dateCreated"),
                  tillID = (int)transaction.Element("tillID"),
                  transID = (int)transaction.Element("transID"),
                  transDateTime = (DateTime)transaction.Element("transDateTime"),
                  saleType = (int)its.Element("saleType"),
                  product = (string)its.Element("product"),
                  value = (decimal)its.Element("value"),
                  qtySold = (int)its.Element("qtySold")
                 };
      
      data.Dump();
      
    }
    
    private string MyXML()
    {
    return 
    @"<?xml version=""1.0""?>
    <Transactions>
      <storeID>3200</storeID>
      <dateCreated>2014-03-11</dateCreated>
      <transaction>
        <tillID>1001</tillID>
        <assistantID>0001</assistantID>
        <transID>5731</transID>
        <transDateTime>2014-03-11</transDateTime>
        <customerTransaction>
          <transItem>
            <itemSale>
              <saleType>0</saleType>
              <product>5821299900</product>
              <value>4950</value>
              <qtySold>1</qtySold>
            </itemSale>
          </transItem>
          <transItem>
            <itemSale>
              <saleType>1</saleType>
              <product>1234567890</product>
              <value>10000</value>
              <qtySold>20</qtySold>
            </itemSale>
          </transItem>
        </customerTransaction>
      </transaction>
    </Transactions>";
    }

    (Dump LinqPad metodu, kurmadiysan kur) Sonuc soyle:

    (2 items)
    StoreID dateCreated tillID transID transDateTime saleType product value qtySold
    3200 3/11/2014 12:00:00 AM 1001 5731 3/11/2014 12:00:00 AM 0 5821299900 4950 1
    3200 3/11/2014 12:00:00 AM 1001 5731 3/11/2014 12:00:00 AM 1 1234567890 10000 20

    • Yanıt Olarak İşaretleyen csharpp 27 Aralık 2015 Pazar 00:59
    24 Aralık 2015 Perşembe 10:39
    Yanıtlayıcı
  • Çok teşekkür ediyorum Çetin abi hemen deneyeceğim.
    27 Aralık 2015 Pazar 00:58