在此处输入代码在我的 SQL Server 数据库中,我单独存储了子编号(例如 802 号单元)和街道编号(例如 242 Elizabeth Street)的地址信息。
如果 subNumber 包含值,我需要将它们显示为一个(即 802/242 Elizabeth Street),否则只需返回 streetNumber(如果不包含值)。
在通过 LINQ 访问数据后,我一直致力于使用 IF ELSE 和 foreach 循环来寻找解决方案 - 但在完成循环后我陷入了困境。我也很乐意使用 SQL 中的 SELECT 存储过程来做到这一点 - 接受建议!
DataClassesDataContext dc = new DataClassesDataContext();
var recent = from p in dc.Properties
orderby p.modtime descending
where p.status == "Current"
select new
{
rsub = (p.subNumber).ToString(),
rnumber = (p.streetNumber).ToString(),
rstreet = p.street,
rsuburb = p.suburb,
rurl = p.propertyURL,
};
foreach (var home in recent)
{
if (string.IsNullOrEmpty(home.rsub))
{
string rnum = home.rnumber;
}
else
{
string rnum = home.rsub + "/" + home.rnumber;
}
}
recentrepeater.DataSource = recent;
recentrepeater.DataBind();
Yahia 给出了 C# 中的最佳选择 - 这是我最终得到的 SQL 解决方案:
ALTER PROCEDURE GetPropertyShort
AS
SELECT TOP 5 ISNULL(convert(varchar(5), subNumber) + '/' + convert(varchar(5), streetNumber), convert(varchar(5), streetNumber)) as Number, street, suburb, propertyURL, modtime
FROM Property
ORDER BY modtime DESC
最佳答案
尝试
var recent = from p in dc.Properties
orderby p.modtime descending
where p.status == "Current"
select new
{
rsub = (p.subNumber).ToString(),
rnumber = (p.streetNumber).ToString(),
rnum = string.IsNullOrEmpty((p.subNumber).ToString()) ? (p.streetNumber).ToString() : (p.subNumber).ToString() + "/" + (p.streetNumber).ToString(),
rstreet = p.street,
rsuburb = p.suburb,
rurl = p.propertyURL,
};
关于c# - 如果两个字符串都包含值,则需要连接两个字符串;如果第一个字符串为 NULL,则返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313113/