2017-07-03 12 views
0
public class OnLoginData 
{ 
    public List<TableDetails> lstTableDetails { get; set; } 
    public List<CategoryDetails> lstCategoryDetails { get; set; }  
} 

public class TableDetails 
{ 
    public int TableId { get; set; } 
    public int TableNumber { get; set; } 
    public string TableName { get; set; } 
} 

public partial class CategoryDetails 
{ 
    public int CategoryId { get; set; } 
    public string CategoryName { get; set; } 
    public string Description { get; set; } 
    public string Image { get; set; } 
    public long? SystemId { get; set; } 
    public int? SortId { get; set; } 
} 

var queryLoginAdimin = from admin in conDb.SystemAdminMasters 
         join system in conDb.SystemMasters on admin.SystemID equals system.SystemId into SM 
         join category in conDb.MenuCategoryMasters on admin.SystemID equals category.SystemId into CM 
         join menu in conDb.MenuMasters on admin.SystemID equals menu.SystemId into MM 
         join table in conDb.TableMasters on admin.SystemID equals table.SystemId into TM 
         select new OnLoginData 
         { 
          lstTableDetails = TM.Select(o => new 
          { 
           o.TableId, 
           o.TableName, 
           o.TableNumber 
          }).ToList() 
         }; 

上記のコードを確認してください。複数のテーブルを使用して結合を試みていますが、データベーステーブルのすべてのフィールドは必要ありません。私は別のクラスTableDetailsCategoryDetailsを持っているフィールドだけが必要です。私は上記のlinqクエリからこれらのフィールドを選択し、On LoginDataである全体のリストを作成したいと思います。LINQ sqlクエリエンティティフレームワークの各結合テーブルで特定のフィールドを選択

どうすればよいですか?

+0

にOnLoginData変更することができますので、あなたは彼らが持っていることをAutomapperのようなマッパーを使用することができますこれを行うためのProjeTo Mehtod –

答えて

0

あなたは.ToListを(使用しないことができる方法

var queryLoginAdimin = 
    from admin in conDb.SystemAdminMasters 
    join system in conDb.SystemMasters on admin.SystemID equals system.SystemId into SM 
    join category in conDb.MenuCategoryMasters on admin.SystemID equals category.SystemId into CM 
    join menu in conDb.MenuMasters on admin.SystemID equals menu.SystemId into MM 
    select new OnLoginData 
    { 
     lstTableDetails = conDb.TableMasters 
           .Where(table => table.SystemId == admin.SystemID) 
           .Select(o => new TableDetails 
           { 
            TableId = o.TableId, 
            TableName = o.TableName, 
            TableNumber = o.TableNumber 
           }), 
     //Same for lstCategoryDetails 
    }; 

下で問い合わせることができます)を選択し内部のあなたがIEnumerableを

public class OnLoginData 
    { 
     public IEnumerable<TableDetails> lstTableDetails { get; set; } 
     public IEnumerable<CategoryDetails> lstCategoryDetails { get; set; }  
    } 
+0

Anandに感謝しますが、残念ながらそれは私にエラーを言う 'System.Collections.Generic.IEnumerable ' 'を' System.Collections.Generic.IEnumerable 'です。明示的な変換があります(キャストがありませんか?)\t 私はすべてを試しました – Nik

+0

lstTableDetailsの.Selectを更新しました。 Plsは編集された答えを参照してください – Anand

+0

アナン、ありがとうございます。出来た。古いものだけが働いた。 最初に選択した問題が何を原因としていたのかが分かりません。あなたの与えられたコード – Nik

関連する問題