我尝试使用下面的代码来检索最后插入的记录。它奏效,但用花括号显示。我想获取最后插入的记录值以打印在标签中
检查下面的图像链接
This is the output of my result
var query = (from p in context.Products
orderby p.ProductID descending
select new
{
p.Name
}).First();
答案 0 :(得分:1)
您正在选择具有单个属性的新对象。因此,printf("Room Code:");
scanf(" %c", &OneClient.RoomCode);
if(OneClient.RoomCode == OneRoom[0].RoomCode)
OneClient.TotGuests=OneRoom[0].RoomCode;
printf("Total Number of Guests(max %d):", OneRoomClient.TotGuests);
是一个匿名对象。现在要做的是将新对象转换为字符串,从而转换为括号。
如果只想显示名称字段,则需要在标签上打印query
。
答案 1 :(得分:1)
如果要查询所有列:
if (mysqli_num_rows($ckrs) > 0) {
它等于sql:
if (!empty($recordcode)) {
如果要将所有列保存到C#变量中,则以后可以像强类型一样使用它。
var query = (from p in context.Products
orderby p.ProductID descending
select p).First();
如果只需要“名称”列和强类型,则不需要新的{}
SELECT TOP (1) *
FROM [Products]
ORDER BY ProductID DESC
它等于sql:
var query = (from p in context.Products
orderby p.ProductID descending
select p).First();
Console.WriteLine(query.Name);
Console.WriteLine(query.SomeCloumn);
答案 2 :(得分:1)
您正在linq查询中生成一个匿名对象,如果只需要名称,那么您要做的只是投影name
属性,而无需使用new { }
表达式,该表达式只是一个{ {1}}值,如:
string
,请记住,如果在string lastInsertedName = (from p in context.Products
orderby p.ProductID descending
select p.name).First();
表中找不到行,则First()
将在运行时引发异常,因为我们有Products
会在其中返回FirstOrDefault()
如果没有行:
null
在当前代码示例中,您将需要访问匿名对象上的string lastInsertedName = (from p in context.Products
orderby p.ProductID descending
select p.name).FirstOrDefault();
属性,并且在当前情况下实际上并不需要匿名对象,简单的name
就足够了,但是在此处说明如何使用提供的代码位做到这一点:
string
为了安全起见,如果不存在任何行:
var query = (from p in context.Products
orderby p.ProductID descending
select new
{
p.Name
}).First();
string lastInsertedName = query.name;
希望有帮助。
答案 3 :(得分:1)
.First()在没有返回任何内容时抛出异常,而FirstOrDefault()返回null
var query = (from p in context.Products
orderby p.ProductID descending
select p).FirstOrDefault();