-2

需要清除对 linq 的一个疑问

public List<SelectListItem> GetAttributeName() 
{ 
   var attri = (from z in _entities.Attributes 
                select z).AsEnumerable()
               .Select(z => new SelectListItem { 
       Text = z.AttributeName + " (" + z.AttributeType.AttributeTypeCode + ")", 
       Value = z.AttributeID.ToString() 
               }); 

  return attri.ToList(); 
}

在这条线上

Text = z.AttributeName + " (" + z.AttributeType.AttributeTypeCode + ")",

输出将是..像这样..

abcd (efgh)
ijkl(mnop)
qrst(uvwx)

但我需要输出是

abcd
ijkl
qrst
efgh
mnop
uvwx

如何做到这一点..?

4

2 回答 2

3
public List<SelectListItem> GetAttributeName() 
{ 
   return _entities.Attributes
                   .Select(a => new SelectListItem {
                         Text = a.AttributeName,
                         Value = a.AttributeID.ToString() })
                   .Concat(_entities.Attributes.AsEnumerable()
                                   .Select(a => new SelectListItem {
                         Text = a.AttributeType.AttributeTypeCode.ToString(),
                         Value = a.AttributeID.ToString() })
                   .ToList();
}

或单次查询数据库(上一个示例将查询数据库两次):

public List<SelectListItem> GetAttributeName() 
{ 
   var attributes = _entities.Attributes
                             .Select(a => new { 
                                  a.AttributeName,
                                  a.AttributeType.AttributeTypeCode,
                                  a.AttributeID
                             }).ToList();

   return attributes.Select(a => new SelectListItem {
                         Text = a.AttributeName,
                         Value = a.AttributeID.ToString() })
                    .Concat(attributes.Select(a => new SelectListItem {
                         Text = a.AttributeTypeCode.ToString(),
                         Value = a.AttributeID.ToString() })
                    .ToList();
}
于 2013-03-26T06:30:31.240 回答
0

我刚刚使用了这个查询并完美地得到了值..

var attributes = _entities.Attributes.ToList().Select(a => new SelectListItem
                    {
                        Text = a.AttributeName,
                        Value = a.AttributeID.ToString()
                    }).Concat(_entities.AttributeTypes.ToList().Select(a => new SelectListItem
                    {
                        Text = a.AttributeTypeCode,
                        Value = a.AttributeTypeID.ToString()
                    }).Distinct().ToList());

                    return attributes.ToList();
于 2013-03-26T07:21:30.327 回答