2

I made this query to get data from a table

List<MyTable> liDeatil = Db.Database.SqlQuery<MyTable>("SELECT * FROM [myDB].[dbo].[MyTable]").ToList();

From liDetail i want to select column dynamically such as

 liDeatil.Select(s => new myclass{ Id = s.Id ,Marks = ....}).Tolist();

Where MyClass is

 public class MyClass
 {
     public Nullable<decimal> Id { get; set; }
     public string Marks { get; set; }
     public string rank { get; set; }
 }

is there any way to get the column pls help me
I tried To do this by reflection But its not working

var ss = liDeatil.Select(s => new MyClass{ Id = s.Id ,Marks = s.GetType().GetProperties("ColumnMarks")}).Tolist();

EDITED

     public class MyTable
     {
         public Nullable<decimal> Id { get; set; }
         public string ColumnMarks{ get; set; }
         public string ColumnMarks1{ get; set; }
         public string ColumnMarks2{ get; set; }
     }
2
  • what do you mean by "From liDetail i want to select column dynamically"? Commented Oct 23, 2013 at 13:09
  • in Select statement i want to select ColumnMarks From liDetail Commented Oct 23, 2013 at 13:10

2 Answers 2

7

From what you are trying to achieve with reflection, below code should work:

var ss = liDeatil.Select(s => new MyClass{ Id = s.Id ,
Marks = (string)s.GetType().GetProperty("ColumnMarks").GetValue(s,null)}).Tolist();
Sign up to request clarification or add additional context in comments.

1 Comment

I have edited my code, try with "GetProperty("ColumnMarks")" instead of "GetProperties("ColumnMarks")"
3

What isn't working exactly? Are you getting an exception? I'm confused where you are getting "ColumnMarks" from. You didn't post the definition for MyTable, so maybe it is from there.

liDeatil.Select(s => new myclass{ Id = s.Id, Marks = (string)s.GetType().GetProperty("ColumnMarks").GetValue(s, null)}).Tolist();

2 Comments

i HAD EDITED MY QUESTION
This answer or Victor's below should work then. You need to call GetValue once you get the property via reflection.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.