[英]Selecting multiple columns with linq query and lambda expression
我是C#ASP.NET的新手,正在开发我的第一个应用程序。
我正在尝试创建一个linq语句,该语句返回一个arrary。
我有一张产品表。 我希望能够为状态== 1的每种产品选择名称,编号和价格。
我正在努力制定一种方法来做到这一点。 我只能退回单个项目/列。 我一直被困在这个很久以前。
这是我到目前为止的内容:
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts.Select(x => x.Name).OrderBy(x => x).ToArray();
}
}
如果您在下面的屏幕快照中查看,您会看到我有2个错误,Select =无法从其用法中引用Type对象ToArray =无法将符号解析为数组
不确定您的表结构是什么样,但请参见下文。
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;
}
}
这将返回带有所需成员的匿名类型的数组。
更新:
创建一个新类。
public class NamePriceModel
{
public string Name {get; set;}
public decimal? Price {get; set;}
public int Id {get; set;}
}
我已经修改了上面的查询以也返回此查询,您应该将方法从返回string[]
更改为返回NamePriceModel[]
。
您可以使用:
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;
}
}
这是YourClass
实现:
public class YourClass
{
public string Name {get; set;}
public int ID {get; set;}
public int Price {get; set;}
}
并且AllProducts
方法的返回类型必须为YourClass[]
。
我想使用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
}
无需声明“联系人”
Object AccountObject = _dbContext.Accounts
.Join(_dbContext.Users, acc => acc.AccountId, usr => usr.AccountId, (acc, usr) => new { acc, usr })
.Where(x => x.usr.EmailAddress == key1)
.Where(x => x.usr.Hash == key2)
.Select(x => new { AccountId = x.acc.AccountId, Name = x.acc.Name })
.SingleOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.