Exemple #1
0
        public static ObjDataSet Merge(ObjDataSet A, ObjDataSet B, String aFieldName, String bFieldname)
        {
            ObjDataSet Result = new ObjDataSet();

            Int32 aIndex = GetHeaderIndex(A, aFieldName);
            Int32 bIndex = GetHeaderIndex(A, aFieldName);

            //Need to merge headers - excluding the index from B
            //Add the Headers from A
            for (Int32 I = 0; I < A.GetHeaderCount(); I++)
            {
                Result.AddHeader(A.GetHeaderName(I), null);
            }


            //Add the headers from B
            for (Int32 I = 0; I < B.GetHeaderCount(); I++)
            {
                if (I != bIndex)
                {
                    Result.AddHeader(B.GetHeaderName(I), null);
                }
            }


            //Merge the data

            for (Int32 I = 0; I < A.GetRowCount(); I++)
            {
                ObjDataRow AR    = A.GetRow(I);
                String     AData = AR.GetRowElement(aIndex).ToString();

                ObjDataRow BR = FindRow(B, bIndex, AData);
                if (BR != null)
                {
                    List <Object> NewRowData      = new List <Object>();
                    Object[]      ExistingRowData = BR.GetRowData();

                    for (Int32 J = 0; J < ExistingRowData.Count(); J++)
                    {
                        if (J != bIndex)
                        {
                            NewRowData.Add(ExistingRowData[J]);
                        }
                    }
                    AR.Add(NewRowData.ToArray());
                    Result.Add(AR);
                }
            }



            return(Result);
        }
Exemple #2
0
        public static bool Read(String Filename, out ObjDataSet FileStruct, bool header)
        {
            FileStruct = null;
            FileStruct = new ObjDataSet();
            try
            {
                System.IO.StreamReader file = new System.IO.StreamReader(Filename);
                //Read our header (if we have one)
                if (header)
                {
                    String   hText   = file.ReadLine();
                    String[] Headers = hText.Split(',');
                    foreach (String H in Headers)
                    {
                        FileStruct.AddHeader(H, null);
                    }
                }

                String   lText;
                String[] Cols;

                while (!file.EndOfStream)
                {
                    lText = file.ReadLine();
                    Cols  = lText.Split(',');
                    ObjDataRow R = new ObjDataRow();
                    R.Add(Cols);
                    FileStruct.Add(R);
                }

                file.Close();
                return(true);
            }
            catch (Exception E)
            {
                Console.WriteLine("Error reading file: " + E.Message);
                return(false);
            }

            return(false);
        }
Exemple #3
0
        //Extract selected Fields from a given CSV file
        //
        public static ObjDataSet Extract(ObjDataSet A, String[] Fields)
        {
            ObjDataSet Result  = new ObjDataSet();
            List <int> Indexes = new List <int>();

            //Check which headers we need and the Index's of columns
            for (Int32 I = 0; I < A.GetHeaderCount(); I++)
            {
                foreach (String H in Fields)
                {
                    if (H.ToUpper() == A.GetHeaderName(I).ToUpper())
                    {
                        Result.AddHeader(A.GetHeaderName(I), null);
                        Indexes.Add(I);
                    }
                }
            }

            //Get the row data
            for (Int32 I = 0; I < A.GetRowCount(); I++)
            {
                ObjDataRow    R     = new ObjDataRow();
                List <Object> L     = new List <object>();
                Object []     RData = A.GetRow(I).GetRowData();

                for (Int32 ColData = 0; ColData < RData.Count(); ColData++)
                {
                    if (Indexes.Contains(ColData))
                    {
                        L.Add(RData[ColData]);
                    }
                }

                R.Add(L.ToArray());
                Result.Add(R);
            }


            return(Result);
        }