如何从LINQ C#中获取数据库中的数据?

时间:2016-04-30 12:51:20

标签: c# .net linq max

我怎样才能获得最新的" id"从我的数据库中,并将其放在文本框中 注意:我必须从我的数据库中返回最新的ID。

看看这个方法:

public void refresh()
{
    var query = from qc in db.tbl_viewClients select qc.id  ;
    int a = Convert.ToInt32(query.SingleOrDefault().ToString());
    txt_id.Text = Convert.ToString(a);
}

4 个答案:

答案 0 :(得分:2)

您应该在没有记录时进行处理,因为NSString *str_url=[arrURL objectAtIndex:indexPath.row];//put your index ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init]; NSURL* aURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@",str_url]]; [assetLibrary assetForURL:aURL resultBlock:^(ALAsset *asset) { ALAssetRepresentation *rep = [asset defaultRepresentation]; Byte *buffer = (Byte*)malloc(rep.size); NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil]; NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES]; cell.imageCell.image=[UIImage imageWithData:data]; } failureBlock:^(NSError *error) { NSLog(@"Error: %@",[error localizedDescription]); }]; 会抛出Max

InvalidOperationException

但这种方法列举了两次查询! 这是一招!

var query = from qc in db.tbl_viewClients select qc.id;
if (query.Any())
{
    var max = query.Max();
    txt_id.Text = max.ToString();
    // do rest of work
}
else
{
   //handle the case when you have no record
}

答案 1 :(得分:1)

假设id存储为int而最新表示最大ID ,您只需使用Max() *:

int a = query.DefaultIfEmpty(0).Max();

否则,问题中缺少确定最新的信息,例如创建日期

*)添加DefaultIfEmpty(0)以返回0,以防query未返回任何结果。

答案 2 :(得分:1)

请试试。

var query = from t in table orderby t.Id descending
                    select t.Id;

object result =  query.FirstOrDefault();
希望有所帮助。

答案 3 :(得分:1)

如果你正在尝试做我认为你的事情(在数据库中插入一些东西,然后查询它以找到你认为刚刚插入的ID),那么停止!这样做不会确保您检索的ID是您需要的ID,因为您的数据库可以随时被其他人更改(并发)。但是,考虑到它只是一个测试,而且只是你使用它并且你需要知道你刚刚插入的ID,那么这样做的方法是:

假设您使用LINQtoSQL或Entity Framework,当您向上下文添加对象并调用SaveChanges()时,相关对象将填充其ID(或主键)字段。检查一下!