gpt4 book ai didi

c# - 在 Linq where 子句中使用带有字符串的 switch-case

转载 作者:行者123 更新时间:2023-11-30 19:39:14 25 4
gpt4 key购买 nike

我尝试在我的 LINQ 查询中使用 where 子句。当我使用数值时,它很好,但是当我想比较 string 值时,它在 where 子句中给出错误。

string StartBarcode = (from s in datamodel.Packages
where s.RealBarcode == SelectedBarcode
select s.StartBarcode).FirstOrDefault().ToString();

IQueryable<PageData> q = (from v in datamodel.VW_WaypointDetails
where (v.RealBarcode == null) ? StartBarcode : v.RealBarcode
select new PageData
{
Name = v.Name,
Surname = v.Surname,
Description = v.Description
}

错误是'无法将 lambda 表达式转换为类型 'string',因为它不是委托(delegate)类型'(我添加了 System.Linq)并且 不能将类型“string”隐式转换为“bool”。我如何将 switch-case 语句与 string 值一起使用?感谢您的所有回答。

最佳答案

where (v.RealBarcode == null) ? StartBarcode : v.RealBarcode

会惨败,因为这应该是一个谓词,但你可以这样做:

IQueryAble<PageData> q = datamodel.VW_WaypointDetails.AsEnumerable()
.Select(wpd=> new PageData
{
Name = wpd.Name,
SurName = wpd.Surname,
Description = wpd.Description,
Barcode = wpd.Barcode == null ? StartBarCode : wpd.Barcode
}).AsQueryAble();

抱歉忘记调用 .AsQueryAble()。不确定这是否有效,但您可以尝试省略对 .AsEnumerable() 的调用(实际上是从数据库获取数据)......我知道 Linq to Entities 不支持的某些功能正常的 Linq 范围,所以这可能是不可能的,您必须稍后创建实际的对象。

关于c# - 在 Linq where 子句中使用带有字符串的 switch-case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28601655/

25 4 0
文章推荐: c# - 从 ASP Web Api IHttpActionResult 反序列化 byte[]
文章推荐: javascript - 使用单个 HTML 页面将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com