Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Условие для возвращения нужного значения (http://forum.oszone.net/showthread.php?t=278896)

Invincible 08-03-2014 03:29 2320653

Условие для возвращения нужного значения
 
Можете подсказать какое условие нужно указать, чтобы возвращалось нужное значение, а не первое попавшееся.
В конкретном примере нужно значение JPG, а возвращается первое PSD
Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] content = File.ReadAllBytes(@"D:\error.jpg");
            Data Newdata = new Data();
            Newdata.Format(content);
            Console.ReadLine();
        }

    }


    public class Data
    {
        public byte[] bytes;
        public string name;
        List<Data> formats = new List<Data>();

        public string Format(byte[] content)
        {
            formats.Add(new Data() { name = "PNG", bytes = new byte[] { 137, 80, 78, 71, 13, 10, 26, 10 } });
            formats.Add(new Data() { name = "ACCDB", bytes = new byte[] { 0, 1, 0, 0, 83, 116, 97, 110, 100, 97, 114, 100, 32, 65, 67, 69, 32, 68, 66 } });
            formats.Add(new Data() { name = "MDB", bytes = new byte[] { 0, 1, 0, 0, 83, 116, 97, 110, 100, 97, 114, 100, 32, 74, 101, 116, 32, 68, 66 } });
            formats.Add(new Data() { name = "IMG", bytes = new byte[] { 0, 1, 0, 8, 0, 1, 0, 1, 1 } });
            formats.Add(new Data() { name = "MDF", bytes = new byte[] { 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 2, 0, 1 } });
            formats.Add(new Data() { name = "PIC", bytes = new byte[] { 1, 0, 0, 0, 1 } });
            formats.Add(new Data() { name = "MDF", bytes = new byte[] { 1, 15, 0, 0 } });
            formats.Add(new Data() { name = "XLS", bytes = new byte[] { 9, 8, 16, 0, 0, 6, 5, 0 } });
            formats.Add(new Data() { name = "DOC", bytes = new byte[] { 13, 68, 79, 67 } });
            formats.Add(new Data() { name = "PPT", bytes = new byte[] { 15, 0, 232, 8 } });
            formats.Add(new Data() { name = "PDF", bytes = new byte[] { 37, 80, 68, 70 } });
            formats.Add(new Data() { name = "7Z", bytes = new byte[] { 55, 122, 188, 175, 39, 28 } });
            formats.Add(new Data() { name = "PSD", bytes = new byte[] { 56, 66, 80, 83 } });
            formats.Add(new Data() { name = "JPG", bytes = new byte[] { 255, 216, 255, 224 } });
            return formats.Where(x => content.SequenceEqual(x.bytes))
              .Select(x => x.name)
              .FirstOrDefault();
       
          string extension = "";
          foreach (Data format in formats)
                    {
                          for (int i = 0; i < format.bytes.Length; i++)
                          {
                   
                    if (format.bytes[i] == content[i])
                    {
                        continue;
                   
                    }
                    else
                   
                    if (format.bytes[i] != content[i])
                    {
                      Console.WriteLine("Сравниваемые байты не равны");
                     
                    }

                   
              }

                extension = format.name;
              Console.WriteLine(extension);
                    }
         
          return extension;
         
      }

    }
}



Время: 07:30.

Время: 07:30.
© OSzone.net 2001-