public TuVungCollection SelectAllTuVung_CongDong()
        {
            //Lấy từ vựng trong từ điển cộng đồng
            hoctuvungLINQDataContext db = new hoctuvungLINQDataContext();
            TuVungCollection tuvungColl = new TuVungCollection();
            IEnumerable<TuVung> TuVungList;
            TuVungList = from p in db.TuVungs
                             where p.TuDien.CongDong == true
                             && p.kiemduyet == true                           
                             select p;
           
            //Addrange
            foreach (TuVung tv in TuVungList)
            {
                TuVungBO tvBO = new TuVungBO();
                tvBO.TuVungID = tv.TuVungID.ToString();
                tvBO.TuVung = tv.TuVung1;
                tvBO.LoaiTuID = (int)tv.LoaiTuID;
                tvBO.NghiaTu = tv.NghiaTu;
                tvBO.ViDu = tv.Vidu;
                tvBO.TaiKhoan = tv.taikhoan;
                tvBO.HinhAnh = tv.Hinhanh;
                tvBO.SoLanSai = (int)tv.SoLanSai;
                tvBO.SoLanSuDung = (int)tv.SoLanSuDung;
                tuvungColl.Add(tvBO);
            }
            return tuvungColl;

        }
 //B2: Lấy ra các từ hàng ngang
 private TuVungBO LayChuHangNgang(TuVungCollection tuvunglambaitest, char tu)
 {
     //Lấy ra các [TuVungBO].[TuVung] có chứ [tu]
     TuVungCollection tempColl = new TuVungCollection();
     foreach (TuVungBO tv in tuvunglambaitest)
     {
         if (tv.TuVung.Contains(tu))
         {
             tempColl.Add(tv);
         }
     }
     //chọn ngẫu nhiên một từ
     if (tempColl.Count == 0)
         return null;
     int rand = rd.Next(tempColl.Count);
     return tempColl.Index(rand);
 }
        public string [,]TaoOChu(TuVungCollection tuvunglambaitest,ref int len,ref TuVungCollection GoiYOChu)
        {
            try
            {
                //B1:Lấy ra một từ ngẫunhiên làm từ hàng dọc
                string tuhangdoc = LayChuHangDoc(tuvunglambaitest);
                List<char> TuHangDoc = new List<char>();//chuyển string thành List<string> để xử lý           
                TuHangDoc = tuhangdoc.ToList();

                //B2: Lấy ra các từ hàng ngang
                TuVungCollection HangNgangList = new TuVungCollection();//Lưu các đối tượng tuvungBO hàng ngang
                List<string> HangNgang = new List<string>(); //Lưu các từ hàng ngang
                int i = 0;
                int solanloop = 0;
                while (i < TuHangDoc.Count)
                {
                    TuVungBO tuhangnganBO = new TuVungBO();
                    tuhangnganBO = LayChuHangNgang(tuvunglambaitest, TuHangDoc[i]);
                    if (tuhangnganBO == null) return null;
                    string tuhangngang = tuhangnganBO.TuVung;
                    if (KiemTraHopLe(tuhangngang, TuHangDoc[i]) == true 
                        && KiemTraTrungTuDoc(tuhangdoc, tuhangngang) == false 
                        && KiemTraTrungTuNgang(HangNgang, tuhangngang) == false)
                    {
                        HangNgang.Add(tuhangnganBO.TuVung);
                        HangNgangList.Add(tuhangnganBO);
                        i++;
                        solanloop = 0;
                    }
                    solanloop++;
                    if (solanloop > 30)
                        return null;
                }
                //B3: Bố trí ô chữ lên mảng 2 chiều [12,21]
                len = TuHangDoc.Count;
                GoiYOChu = HangNgangList;
                return SapxepOChu(TuHangDoc,HangNgangList) ;
            }
            catch
            {
                return null;
            }

        }
        public TuVungCollection SelectTuVung_Viet(string tuvung,string taikhoan)
        {
            TuDienDAO tudienDAO = new TuDienDAO();
            TuVungCollection tuvungColl = new TuVungCollection();
            //Lấy tất cả từ vựng [Công Đồng]
            tuvungColl = SelectAllTuVung_CongDong();
            if (taikhoan != "")
            {
                //Lấ tát cả từ vựng[Cá nhân]
                TuDienCollection tudiencanhan = new TuDienCollection();
                tudiencanhan = tudienDAO.SelectTuDien(taikhoan);
                foreach (TuDienBO td in tudiencanhan)
                {
                    tuvungColl.Addrange(SelectTuVung_CaNhan("", taikhoan, td.TuDienID));
                }
                TuDienCollection tudienlienket = new TuDienCollection();
                tudienlienket = tudienDAO.SelectTuDien_LienKet(taikhoan);
                foreach (TuDienBO td in tudienlienket)
                {
                    tuvungColl.Addrange(SelectTuVung_LienKet("", taikhoan, td.TuDienID));
                }
            }
            //Lấy danh sách từ vựng tìm đựơc
            TuVungCollection foundColl = new TuVungCollection();
            foreach (TuVungBO tv in tuvungColl)
            {
                if (tv.NghiaTu.Contains(tuvung))
                {
                    //kiểm tra từ đó có tồn tại chưa
                    bool exist = false;
                    if (foundColl.Count > 0)//chỉ kiểm tra khi foundColl>0
                    {
                        foreach (TuVungBO tv1 in foundColl)
                        {
                            if (tv.TuVungID == tv1.TuVungID)
                            {
                                exist = true;
                                break;
                            }

                        }
                    }
                    if (exist == false)//nếu chưa thì thêm vào
                        foundColl.Add(tv);
                }
            }
            return foundColl;             
        }
        public TuVungCollection SelectTuVung_LienKet(string tuvung, string taikhoan, string tudienID)
        {
            //Lấy từ vựng trong từ điển liên kết

            hoctuvungLINQDataContext db = new hoctuvungLINQDataContext();
            TuVungCollection tuvungColl = new TuVungCollection();
            Guid myguid= new Guid(tudienID);
            IEnumerable<Nhom_TuDien> nhomtudienList=from p in db.Nhom_TuDiens
                                                    where p.taikhoan==taikhoan
                                                    select p;
            IEnumerable<TuVung> TuVungList;
            if (tuvung == "")
            {              
                TuVungList = from p in db.TuVungs
                             where p.TuDienID==myguid
                             select p;
            }
            else
            {
                TuVungList = from p in db.TuVungs
                             //  where p.TuDien.Nhom_TuDiens == nhomtudien && 
                             where p.TuVung1.Contains(tuvung)
                             && p.TuDienID == myguid
                             select p;
            }
            //Addrange
            foreach (TuVung tv in TuVungList)
            {
                foreach (Nhom_TuDien nhomtd in nhomtudienList)
                {
                    if(tv.TuDienID==nhomtd.TuDienID)
                    { 
                        TuVungBO tvBO = new TuVungBO();
                        tvBO.TuVungID = tv.TuVungID.ToString();
                        tvBO.TuVung = tv.TuVung1;
                        tvBO.LoaiTuID = (int)tv.LoaiTuID;
                        tvBO.NghiaTu = tv.NghiaTu;
                        tvBO.ViDu = tv.Vidu;
                        tvBO.TaiKhoan = tv.taikhoan;
                        tvBO.HinhAnh = tv.Hinhanh;
                        tvBO.SoLanSai = (int)tv.SoLanSai;
                        tvBO.SoLanSuDung = (int)tv.SoLanSuDung;
                        tuvungColl.Add(tvBO);
                    }
                }
            }
            return tuvungColl;
        }