Tes*_*ell 5 .net c# linq linq-to-entities entity-framework
我有表Message,并Image说我的加盟。这些表如下所示:
Message(MessageID, TimeStamp, Text, RoomID, ImageID, UserID)
Image(ImageID, Path, Type, UserID)
Run Code Online (Sandbox Code Playgroud)
并非所有邮件都有一个ImageID。这是我当前的加入:
List<Message> messages = Message.GetAll();
List<Image> images = Image.GetAll();
var resultTable = from m in messages
join i in images
on m.ImageID equals i.ImageID
select new
{
MessageID = m.MessageID,
TimeStamp = m.TimeStamp,
Text = m.Text,
RoomID = m.RoomID,
ImageID = m.ImageID,
UserID = m.UserID,
Path = i.Path // Nullable
};
Run Code Online (Sandbox Code Playgroud)
然后resultTable,我绑定到ListView需要表中的Path列的Image。我当前的联接仅返回带有图像的消息。我将如何选择所有消息,但是如果消息中包含ImageID != null,则为其分配值Path?我认为我应该改变这一行:on m.ImageID equals i.ImageID至少。
您当前正在执行内连接,但您可以使用DefaultIfEmpty() 创建左外连接。这也将返回空记录。
var resultTable = from m in messages
join i in images on m.ImageID equals i.ImageID into imgJoin
from img in imgJoin.DefaultIfEmpty()
select new
{
MessageID = m.MessageID,
TimeStamp = m.TimeStamp,
Text = m.Text,
RoomID = m.RoomID,
ImageID = m.ImageID,
UserID = m.UserID,
Path = img != null ? img.Path : ""
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3440 次 |
| 最近记录: |