Mar*_*ark 13 c# sql linq asp.net
我是C#ASP.NET的新手,正在开发我的第一个应用程序.
我正在尝试创建一个返回arrary的linq语句.
我有一张产品表.我希望能够为状态== 1的每个产品选择名称,ID和价格.
我正在努力设法做到这一点.我只能返回单个项目/列.我一直坚持这种方式.
这是我到目前为止:
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts.Select(x => x.Name).OrderBy(x => x).ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你看下面的屏幕截图,你可以看到我有2个错误,Select = Type对象无法从它的用法中提到ToArray = cant解析符号到数组

sca*_*tag 29
不确定你的表结构是什么样的,但见下文.
public NamePriceModel[] AllProducts()
{
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts
.Where(x => x.Status == 1)
.Select(x => new NamePriceModel {
Name = x.Name,
Id = x.Id,
Price = x.Price
})
.OrderBy(x => x.Id)
.ToArray();
}
}
catch
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
这将返回一个匿名类型数组,其中包含您需要的成员.
更新:
创建一个新类.
public class NamePriceModel
{
public string Name {get; set;}
public decimal? Price {get; set;}
public int Id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我已经修改了上面的查询以返回它,你应该改变你的方法从返回string[]到返回NamePriceModel[].
Far*_*yev 12
您可以使用:
public YourClass[] AllProducts()
{
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts.Where(x => x.Status == 1)
.OrderBy(x => x.ID)
.Select(x => new YourClass { ID = x.ID, Name = x.Name, Price = x.Price})
.ToArray();
}
}
catch
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
这是YourClass实施:
public class YourClass
{
public string Name {get; set;}
public int ID {get; set;}
public int Price {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
并且您的AllProducts方法的返回类型必须是YourClass[].
小智 5
我想使用LINQ和Lamba,返回两个字段值并将其分配给单个实体对象字段;
as Name = Fname +“” + LName;
请参阅我下面的代码,它按预期方式工作;希望这是有用的;
Myentity objMyEntity = new Myentity
{
id = obj.Id,
Name = contxt.Vendors.Where(v => v.PQS_ID == obj.Id).Select(v=> new { contact = v.Fname + " " + v.LName}).Single().contact
}
Run Code Online (Sandbox Code Playgroud)
无需声明“联系人”