Fasil Hayat's blog

...C#, .Net, Sharepoint, BizTalk, JQuery...

Get dump of GAC assemblies.

Make a *.bat file with the following commands:

cd  c:\windows\assembly\GAC_MSIL
xcopy . C:\GacDump /s /y

 



Say you have the need to flatten a collection of albums and retrieve all the photos within the albums and put them into a single album, you can use the SelectMany() notation in linq.

   1:  using System.Collections.Generic;
   2:      using System.IO;
   3:   
   4:      using System.Linq;
   5:   
   6:      class Program
   7:      {
   8:          static void Main(string[] args)
   9:          {
  10:              var data = GetAlbums();
  11:              var flattenAlbum = new Album { Id = 0, Name = "Flattenedalbum",  
  12:                  Photos = data.SelectMany(p => p.Photos).ToList() };
  13:          }
  14:   
  15:          private static IEnumerable<Album> GetAlbums()
  16:          {
  17:              var data = new List<Album>
  18:              {
  19:                  new Album
  20:                  {
  21:                      Id = 1, Name = "Album1", Photos = new List<Photo>
  22:                      {
  23:                          new Photo
  24:                          {
  25:                              Id = 1, Name = "Photo1"
  26:                          },
  27:                          new Photo
  28:                          {
  29:                              Id = 2, Name = "Photo2"
  30:                          },
  31:                          new Photo
  32:                          {
  33:                              Id = 3, Name = "Photo3"
  34:                          }
  35:                      }
  36:                  },
  37:                  new Album
  38:                  {
  39:                      Id = 2, Name = "Album2", Photos = new List<Photo>
  40:                      {
  41:                          new Photo
  42:                          {
  43:                              Id = 4, Name = "Photo4"
  44:                          },
  45:                          new Photo
  46:                          {
  47:                              Id = 5, Name = "Photo5"
  48:                          },
  49:                          new Photo
  50:                          {
  51:                              Id = 6, Name = "Photo6"
  52:                          },
  53:                          new Photo
  54:                          {
  55:                              Id = 7, Name = "Photo7"
  56:                          }
  57:                      }
  58:                  }
  59:              };
  60:              return data;
  61:          } 
  62:      }
  63:   
  64:      class Album
  65:      {
  66:          public int Id { get; set; }
  67:          public string Name { get; set; }
  68:          public List<Photo> Photos { get; set; }
  69:      }
  70:   
  71:      class Photo
  72:      {
  73:          public int Id { get; set; }
  74:          public string Name { get; set; }
  75:          public Stream Data { get; set; }
  76:      }


In addition to my previous post, where I was calculating age based on birthdates. If we go the other way around and pretend that we have an age span instead; an age 'from' and 'to' we can easily convert those to represent the datespan that we are interested in the following way.

public class Agespan
{
    public int AgeFrom { get; set; }
    public int AgeTo { get; set; }
 
    public DateTime DateFrom 
    {     get 
        { 
            { 
                return DateTime.Now.Date
                .AddYears(-AgeTo - 1)
                .AddDays(1); 
            }
        } 
    }
    public DateTime DateTo     
    { 
        get 
        { 
            return DateTime.Now.Date
            .AddYears(-AgeFrom)
            .AddHours(23)
            .AddMinutes(59)
            .AddSeconds(59); 
        } 
    }
}


Now we can in instantiate our "Agespan" object and use our dates on the object instead.

var agespan = new Agespan { AgeFrom = 24, AgeTo = 55 };


nov
17

Local variables with λ

af Fasil | Tags: ,

After a long pause I have decided to do all my future posts in English.

In a λ expression, I had a need to call an arbitrary method within my expression.
Now istead of calling the method multiple times within the expression, I had a need to assign the result to a local variable.

Here is the result of how that is achieved.

   1:  var result = mylist.AsEnumerable().Where(x => x 
   2:                      { 
   3:                          var age = GetAge(f.Birthdate); 
   4:                          return age >= search.Age.From && 
   5:                          age <= search.Age.To; 
   6:                      })
   7:                      ).Select(p => new Person 
   8:                          { 
   9:                              Id = p.Id,  
  10:                              Name = p.Name
  11:                          }).ToList();

 

Instead of invoking 'GetAge' method twice, the 'age' variable is declared and the result of the 'GetAge' is assigned to 'age'. The 'age' variable can now be used within the λ expression.





Der er masser af eksempler på forretningsbegreber og forretningsbetegnelser, der undergår en anden navngivning under fysisk gengivelse i form af entiteter og deres indbyrdes forhold. De forretningsmæssige navne skal / bør altid bibeholdes ved formidling af viden udenom systemerne og som kommunikationsmiddel mellem forretningen og teknikere for at mindske misforståelser og for at fremme forretningskendskabet. Dog er der intet behov for at manifestere redundante elementer af navne ved gengivelse af begreberne i den fysiske klassificering af objekthierakiet. Taksonomien skal med andre ord udnyttes i entiteternes indbyrdes relationer. Konteksten bliver hermed den styrende del for sammensætningen af objekthierakiet, og man undgår redundant gentagelse af navnet.

Et meget banalt eksempel, der tydeligt illustrerer den semantiske tese (uden nedarvning):

   1:  public class Bord {
   2:      public Plade Plade { get; set; }
   3:      public Ben Ben { get; set; }
   4:  }
   5:   
   6:  public class Plade {
   7:      public int Laengde { get; set; }
   8:      public int Bredde { get; set; }
   9:  }
  10:   
  11:  public class Ben {
  12:      public int Laengde { get; set; }
  13:      public int Antal { get; set; }
  14:  }
  15:   
  16:  public class TestBord {
  17:      public Bord HentBord() {
  18:          var bord = new Bord();
  19:   
  20:          bord.Plade = new Plade();
  21:          bord.Plade.Bredde = 50;
  22:          bord.Plade.Laengde = 100;
  23:   
  24:          bord.Ben = new Ben();
  25:          bord.Ben.Laengde = 30;
  26:          bord.Ben.Antal = 4;
  27:   
  28:          return bord;
  29:      }
  30:  }

Ser man på semantikken i eksemplet, vil man se, at klasserne ikke hedder 'Bordplade' eller 'Bordben', da de implicit bliver tydelige, i den kontekst objekterne bliver brugt i (bord.Plade istedet for det redundante bord.BordPlade).

{bord.{Plade}.Bredde} = 50; //Bordplade og Pladebredde

{bord.{Ben}.Laengde} = 30;
//Bordben og Benlaengde

Desuden bliver disse entiteter åbne og generelle og kan derfor bruges i andre entiteter, men kun hvis egenskaberne tillader genbrugen. Fx. kan 'Ben' entiteten indgå som en del af 'Stol' entiteten, da en stol også har ben.

Det vil dog være forkert at bruge 'Ben' entiteten i person eller dyr entiteter, selvom de overordnede egenskaber tillader det (antal, længde m.m), men her vil domænet dog være forkert, da forretningsdomænet her kunne være møbler og ikke organismer.



Fasil Malik Hayat

Developer
.Net, WCF, Sharepoint, MOSS, Biztalk, JQuery.

linkedin facebook twitter plaxo google+ grooveshark boxee
fasil

Education

fasil

Bachelor of Science (Honours)
De Montfort University, Leicester.

Fag: Java, MVC, Information Strategy, ITIL

Microsoft Certified Technology Specialist

Skills

.net vs2010 - C# sharepoint sql server jquery ubuntu java netbeans


  

Sign in