Mit ‘LINQ’ getaggte Artikel

Manchmal darf es eben LINQ sein

Samstag, 22. August 2009

/// <summary>
/// Gets the dashboarditems of the player
/// </summary>
/// <param name="amount">Number of items to be returned</param>
/// <returns>Enumeration of Dashboarditems</returns>
public IEnumerable<DashboardItem> GetDashboardItems(int amount)
{
    var messageSystem = this.LogicSession.GetLogicHandler<IMessageSystemLogic>();
    var playerActionLogic = this.LogicSession.GetLogicHandler<IPlayerActionLogic>();
    var languageHandler = this.LogicSession.GetLogicHandler<ILanguageHandler>();

    return from y in
               ((from x in messageSystem.GetMessages(this.playerLogic.PlayerId)
                 orderby x.Created
                 select x).Take(amount))
           let z = playerActionLogic.GetPlayer(y.SenderId)
           let playername = z == null ?
                    languageHandler["/web/messagespage/system"] :
                    z.GetData().Playername
           select new DashboardItem(
               playername,
               y.Subject +
                (!string.IsNullOrEmpty (y.Content) ?  " – " + y.Content : string.Empty),
               DashboardItem.DefaultType.Message,
               DateTime.Now);
}

Hin und wieder muss man einfach mal unkonventionell programmieren. Nicht das schönste Query, aber es funktioniert.