2012-06-19 4 views
6

このチェックボックスのチェックボックスをオンまたはオフにすることができます。チェックボックスリストに基づいて特定の列を選択する必要があります

選択したチェックボックスに基づいて、その値をコンマで区切って保存しました。問題は選択されたチェックボックスに基づいているため、その特定の列だけを取得する必要があります。で、私は件名]チェックボックスリストActualTimeを、で選択した場合、私は、チェックボックスの一覧の件名をで選択した場合、それは

db.Tasks.OrderBy(t => t.CreatedDate).ToList() 
    .Select(t => new { 
     Id = t.Id,  
     ActualTime = t.ActualTime, 
     Subject = t.Subject 
    }).ToList(); 

ようにする必要があります**

db.Tasks.OrderBy(t => t.CreatedDate).ToList() 
    .Select(t => new { 
     Id = t.Id, 
     PriorityId = t.ProjectId, 
     Priority = t.Priority, 
     StatusId = t.StatusId, 
     Status = t.Status, 
     EstimatedTime = t.EstimatedTime, 
     ActualTime = t.ActualTime, 
     Subject = t.Subject, 
     FileName = t.FileName, 
     AssignedTo = t.AssignedTo, 
     Project = t.Project 
    }).ToList(); 

enter image description here

を "選択"、ファイル名、AssignedTo、それは次のようになります

db.Tasks.OrderBy(t => t.CreatedDate).ToList() 
    .Select(t => new { 
      Id = t.Id, 
      Subject = t.Subject, 
      FileName = t.FileName, 
      AssignedTo = t.AssignedTo 
     }).ToList(); 

選択は選択されたchに基づいて動的になりますeckボックスリスト。

+2

質問は?もっとあなたのコードを説明してください。チェックボックスはコードでどのように表現されていますか?それは 'Tasks'ですか?あなたが入力と期待される出力を示していれば、もっと簡単になります。 –

+0

これらのチェックボックスは、ユーザーが選択したい列を選択させるために使用されます。 –

+3

あなたが求める答えがここにあるかもしれないhttp://stackoverflow.com/questions/606104/how-to-create-linq-expression-tree-with-anonymous-type-in​​-it –

答えて

2

プロジェクトにDynamicLibrary.csを追加します。 linkから入手できます。これは、ダイナミックリンクソースを含むzipファイルです。これはdllではありません。 ScottGuのブログhereにもともと掲載されています。参照のために このスタックオーバーフローを参照してくださいlink

using System.Linq.Dynamic; 

    public class DynamicColumns : BaseEntity 
    { 
     public string User { get; set; } 
     public string TaskId { get; set; } 
     public string Project { get; set; } 
     public string Priority { get; set; } 
     public string TaskType { get; set; } 
     public string Version { get; set; } 
     public string Module { get; set; } 
     public string Subject { get; set; } 
     public string Details { get; set; } 
     public string FileName { get; set; } 
     public string Status { get; set; }   
     public string AssignedBy { get; set; } 
     public string AssignedTo { get; set; } 
     public int ActualTime { get; set; } 
     public int LogWork { get; set; } 
     public DateTime CreatedDate { get; set; } 
     public DateTime AssignedDate { get; set; } 
     public DateTime ResolveDate { get; set; } 
     public int EstimatedTime { get; set; } 
    } 

    public enum EnumTasks 
    { 

     User = 1, 
     Project = 2, 
     Priority = 3, 
     TaskType = 4, 
     Version = 5, 
     Module = 6, 
     Subject = 7, 
     Details = 8,   
     Status = 9,    
     Assigned_By = 10, 
     Assigned_To = 11, 
     Created_Date = 12, 
     Assigned_Date = 13, 
     Resolve_Date = 14, 
     Estimated_Time = 15, 
     Actual_Time = 16, 
     LogWork = 17 
    } 

    public IQueryable DynamicSelectionColumns() 
    { 
     using (var db = new TrackerDataContext()) 
     { 
      string fieldIds = "," + "4,5,3,2,6,17,11,12" + ","; 

      var taskColum = Enum.GetValues(typeof(EnumTasks)).Cast<EnumTasks>().Where(e => fieldIds.Contains("," + ((int)e).ToString() + ",")).Select(e => e.ToString().Replace("_", "")); 

      string select = "new ( TaskId, " + (taskColum.Count() > 0 ? string.Join(", ", taskColum) + ", " : "") + "Id)"; 

      return db.Task.ToList().Select(t => new DynamicColumns() { Id = t.Id, TaskId = Project != null ? Project.Alias + "-" + t.Id : t.Id.ToString(), ActualTime = t.ActualTime, AssignedBy = t.AssignedBy.ToString(), AssignedDate = t.AssignedDate, AssignedTo = t.AssignedTo.ToString(), CreatedDate = t.CreatedDate, Details = t.Details, EstimatedTime = t.EstimatedTime, FileName = t.FileName, LogWork = t.LogWork, Module = t.Module != null ? t.Module.Name : "", Priority = t.Priority != null ? t.Priority.Name : "", Project = t.Project != null ? t.Project.Name : "", ResolveDate = t.ResolveDate, Status = t.Status != null ? t.Status.Name : "", Subject = t.Subject, TaskType = t.TaskType != null ? t.TaskType.Type : "", Version = t.Version != null ? t.Version.Name : "" }).ToList().AsQueryable().Select(select); 
     } 
    } 
+0

が機能していません。私は1つのモデルを作成し、そのモデルにその値を割り当てました。エラーは接続が切れています。 – Thulasiram

+0

グーブログのリンクをありがとう、無限の厄介な解決策と動的なlinq問題へのいくつかの答えのためにSOの周りを偵察していました、そして私は区が5年前にそれをすべて明確にしたことを見つける! –

+0

@ThulasiRam、私の質問を見てもらえますか?私は動的LINQクエリを実装しようとしていますが、私はいくつかの問題が起きて実行している間にスコットとあなたの例を見直しています。ありがとう! https://stackoverflow.com/questions/28903387/implementing-dynamic-linq-querying-in-mvc5-ef-application –

関連する問題