Is there a way to write it in more efficient and modern (Up to date design pattern) way?  static Dictionary<string, Dictionary<string, string>> m_LUApplicationParams;    public string LUApplicationParams(int applicationId, string GuidId, string variable)            {                if (m_LUApplicationParams == null)                {                    var blLU = new LU();                    DataTable dt = new DataTable();                    dt = blLU.GetLUApplicationVaribales(applicationId);                    m_LUApplicationParams = new `Dictionary<string,Dictionary<string,string>>();`                    for (int i = 0; i < dt.Rows.Count; i++)                    {                        if (!m_LUApplicationParams.ContainsKey(dt.Rows[i][LangId].ToString()))                        {                            m_LUApplicationParams.Add(dt.Rows[i][LangId].ToString(), new Dictionary<string, string>());                        }                        m_LUApplicationParams[dt.Rows[i][LangId].ToString()].Add(dt.Rows[i][Variable].ToString(), dt.Rows[i][Content].ToString());                                    }                }                return m_LUApplicationParams[GuidId].Where(y => y.Key == variable).FirstOrDefault().Value.ToString();            }
Keep database lookup in memory and get values in frequent
c#