Search code examples
c#linqlinq-to-sql.net-4.0anonymous-types

Anonymous Type in LINQ


I'm trying to get anonymous object from query:

var myList = from td in MyObjectList
             select new
             {
                 a = td.a,
                 b = td.b,
                 c = td.c,
                 name = (from r in contex.NewList
                         where r.aa  == td.a && r.bb == td.b
                         select r.Name).ToList()
             };

I would like name to have r.Name value cause I expect that name list contains only one element. If it contains 0 elements I would like name to have value NONE if more then 1 element then exception should be thrown or something.

Is it even possible to achieve something like that? Thanks for help.


Solution

  • Instead of .ToList() use

    .SingleOrDefault() ?? (td.a == 0 ? "XNone" : "None")
    

    Edit: Changed anwer based on comment.

    Also I would recomend not to put such logic into Linq-to-SQL. Sometimes this can result in big chunk of highly-unoptimized SQL code and, unless you dont mind some performance isues, can result in much slower SQL execution.