如何在lambda表达式或linq中执行此操作?我有这个需求,一个产品可以有多张图片,默认图片只能有一张。如果属性isDefault等于true,则可以确定产品的默认图像。我想在LINQ和lambda中执行此操作,但我被困在我的代码中:privateclassProdcutImages{publicInt32ID{get;放;}publicStringProductID{得到;放;}publicBooleanIsDefault{get;放;}公共图像图像{得到;放;}publicStringFileName{得到;放;}}publicvoidSetDefaultImage(intproductID){SqlConnectionconn=getConnection();conn.Open();SqlDataAdapterda=newSqlDataAdapter("SELECT*FROMproduct_imagesWHEREproduct_id=@ID",conn);da.SelectCommand.Parameters.Add(newSqlParameter("@ID",productID));DataTabledt=newDataTable();da.Fill(dt);varimageList=(fromtrindt.AsEnumerable()selectnewProdcutImages(){ID=tr.Field("id"),ProductID=tr.Field("productId"),IsDefault=tr.Field("isDefault")复制代码,图像=tr.Field("图像"),文件名=tr.Field("文件名")}).ToList();pictureBox1.Image=//???conn.Close();也许这样:varimg=imageList.FirstOrDefault(i=>i.IsDefault);if(img!=null){pictureBox1.Image=img.Image;}或者,考虑一下有人忘记在任何图像上设置IsDefault字段的情况:varimg=imageList.FirstOrDefault(i=>i.IsDefault)??imageList.FirstOrDefault();if(img!=null){pictureBox1.Image=img.图像;}(如果未设置为默认值,这将使用第一个可用图像)如果方法是SetDefaultImageSELECT*FROMproduct_imagesWHEREproduct_id=@IDandis_default=1或者类似的东西,如果你不,可以带额外的东西来自数据库pictureBox1.Image=imageList.FirstOrDefault(pi=>pi.IsDefault);您甚至不需要使用ToList。您是否需要仅为isDefault=true的特定产品中的一组选择图像?我做事有点不同。我在全局定义了一个连接字符串(db),所以我不确定它是否与您的完全一样,但是您应该能够修改方法的第一行。这就是我认为你要求的:varimageList=db.DataTable.Where(w=>w.ID==productID&&w.IsDefault==true).FirstOrDefault();pictureBox.Image=imageList.Image;如果有很多IsDefault为true的图像,我认为您可以查看使用SingleOrDefault并捕获错误的机会。C#学习教程就是这些:如何在lambda表达式或linq中执行此操作?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
