我有一个包含多个列的实体,除了1列存储以逗号分隔的ID。
当我将数据返回给客户端时,我需要查询其他一些表以返回Name而不是Id。
我正在使用Linq-To-Sql。该查询对许多其他表执行了Left Outer Joins,但仍然不确定如何将此属性保留为1列但名称而不是ID。
var query = (
from poc in _manager.All
// Shelter
join s in _shelters.GetAll() on poc.Shelter equals s.Id into JoinShelter
from sh in JoinShelter.DefaultIfEmpty()
select new Dto
{
Id = poc.Id,
PocPresent = poc.PocPresent ? "Yes" : "No",
Shelter = sh.ShelterName
}
还有一个名为Languages的属性。它是一个字符串“1,2”,意思是语言1和语言2.
在“poc”上,属性为Languages =“1,2”
现在,我需要将其作为“Lang1,Lang2”返回。
如何使用Lin-To-Sql?
由于
答案 0 :(得分:0)
您可以在Languages
属性上使用投影,并使用Select()
LINQ扩展方法。
var query = (
from poc in _manager.All
// Shelter
join s in _shelters.GetAll() on poc.Shelter equals s.Id into JoinShelter
from sh in JoinShelter.DefaultIfEmpty()
select new Dto
{
Id = poc.Id,
PocPresent = poc.PocPresent ? "Yes" : "No",
Shelter = sh.ShelterName,
Languages = poc.Languages.Split(",".ToCharArray()).Select(l => "Lang"+l)
})
在此示例中,Languages
对象上的Dto
属性为IEnumerable<string>
。如果您需要使用csv string formati,则可以通过String.Join
方法完成。